|
|
Hemi Edwards
2025-09-17 15:36 #
@Paul Tarvydas A friend of mine and I were exploring this subject. He was a computer engineer trained at MIT back in the mid 1980s and had developed expertise in higher level languages like Go and Ruby, but was interested in going back to first-principles. He was interested in the possibilities offered by UML and generating domain specific language to solve problems. I actually thought about combining UML with a TLA+. UML could be used as a visual representation of a system's design and TLA+ could perform the role of specification and verification of the system's model and then generate Ada code to build mission critical system, like they do in aerospace. |
| 2 comments | |
|
|
Chris Knott
2025-09-17 09:55 #
Does anyone remember a paper about a low level data format that was a kind of structured JSON thing, but it was a binary format and gracefully simplified into a raw string or raw int if that was the only data. It was definitely posted here at some point, maybe 5yrs ago though…! |
| 8 comments | |
|
|
Joel Gethin Lewis
2025-09-17 04:56 #
https://www.youtube.com/watch?v=tfDCNpaPBiA |
|
|
Paul Tarvydas
2025-09-15 02:43 #
https://programmingsimplicity.substack.com/p/simplicity-1d3?r=1egdky |
| # |
Paul Tarvydas
2025-09-11 19:16 #
A sketch that might inspire brainstorming. I perceive that we're "doing what we've always done" instead of stepping back and inventing new stuff, like they did in 1960. The "we've always done it this way" mentality results in epicycles piled on top of epicycles. |
| 8 comments | |
|
|
Paul Tarvydas
2025-09-04 07:34 #
Pond'ring aloud: We know that "loop" is recursion, but recursion is often expressed in too-academic a manner. We know that recursion consists of 2 parts: 1. termination case 2. recursion case. I'm thinking about what might be a less-inhumane syntax for expressing a recursive solution. Suitable for non-programmers and LLMs? [aside: the goal is not "efficiency" at the machine level, but expressiveness and human (non-programmer) understandability] humane syntax???: inhumane syntax: [aside: "send ..." sends something forward asynchronously instead of returning it synchronously to the caller and unblocking the caller] less-inhumane syntax involving async ports: suggestions / comments? |
| 8 comments | |
|
|
Eli Mellen
2025-08-27 08:59 #
Inspired by conversation last night at the virtual meetup, I wrote a blog post to introduce the toy language I’ve been working on. |
| 6 comments | |
|
|
Ivan Reese
2025-08-23 23:28 #
Anyone have experience with XSLT? The recent kerfuffle about removing it from the html spec and the episode of Igalia Chats about it were both quite interesting to me. A declarative tree-transformation language!? Sounds like the sort of thing you could build a web app engine around ;) |
| 9 comments | |
|
|
Christopher Shank
2025-08-18 13:28 #
The theme of the GMTK Gam Jam was "loops" and there are lots of fun and novel explorations of affordances, interactions, and mechanics that feel applicable to the types of stuff explored here https://www.youtube.com/watch?v=kG3LWpuiLqg |
|
|
Safta Catalin Mihai
2025-08-02 03:25 #
Seems like the message from the Better Software Conference is that the future of programming should be: simple, low level ( aka fast ), imperative, data-oriented ( not oop ) coding. I kind of like it… Started working in C again for some personal projects, and I enjoy it. |
| 1 comments | |
|
|
Kartik Agaram
2025-08-02 00:11 #
This might be premature, but I think I finally understand Dijkstra's approach to deriving programs from post-conditions in "A Discipline of Programming". I've had this book on my bookshelf for almost 20 years, never understood it but also never quite worked up the will to toss it out. (For context, I only own like a dozen books over the long term.) Concretely, I've made it to the end of Chapter 7. I feel like I understand every bit up until this point. Parts of Chapter 6 and 7 feel very sloppily written! And this is Dijkstra! So either my leaps of interpretation are only leaps because I'm missing something, or my sense of understanding is an illusion :sweat_smile: Has anyone here made it this far and feel like they understood it? I'd love to talk to you. Incidentally: I wouldn't have made it in even this my probably 4th attempt, if it wasn't for LLMs. They're better than a rubber duck for talking things over with! It's amazing that they can all converse intelligently about the Dijkstra method, and all I need to do is mention wp or wdec. Or I know nothing and am incapable of judging anything about this book. |
| 14 comments | |
|
|
Paul Tarvydas
2025-07-23 12:56 #
Inspiration from today's demo meetup: @Nilesh Trivedi casually tossed out the idea that there are 2 kinds of edges between software units: edge (visible line) and containment (invisible(?), but, easy to calculate using bounding boxes). I think that containment is important, but, I've been avoiding it because I could only think of complicated ways to represent it. If it's "just" an edge, then the problem is solved :face_palm:. I've used Prolog (exhaustive search using backtracking) in the past to infer edge information from JSON (SWIPL even knows how to inhale and exhale JSON). Now that backtracking is no longer a verbotten technique (OhmJS, Prolog, miniKanren, Nils Holm's Scheme code & transpilations of that code to other PLs, cl-holm, etc.) it should be straight-forward to create DPLs that use "containment" visual syntax. Hmmm... |
| 1 comments | |
|
|
Dave Bauer
2025-07-20 09:29 #
I've been reflecting on this video and now I need to go learn about Flow Based Programming. I have been trying to imagine what changes could be made to some of the code I've developed if a model hierarchy was not the only possible solution. |
|
|
Paul Tarvydas
2025-07-19 11:47 #
Watching this (again). I find myself wondering if this can be related to Morrison's FBP (flow based programming), especially his "conveyor belt" model. It, also, underlines my feeling that there should be a strong separation between the expression of programs in human-oriented terms, vs. some kind of automatic mapping from that human-readable domain to something production engineered to run on hardware CPUs. Currently, popular programming languages try to do both at once, usually leaning on humans to express code in ways that can be optimized for hardware (based on old-fashioned 1960s biases). I think that there should be two distinct languages and some automagic tooling that transforms from one to the other. A simple example is Prolog. Someone wrote a Prolog "engine" in machine code (or assembler, or an ancestor of assembler, like Lisp/Python/Haskell/C/etc). Prolog code allows humans to express "relational logic", then maps that logic onto operations for the engine (e.g. WAM). |
| 1 comments | |
|
|
Paul Tarvydas
2025-07-16 05:21 #
https://programmingsimplicity.substack.com/p/programming-and… |
|
|
Andreas S.
2025-07-10 07:30 #
Hey Foc! This piece got swamped, but I do think it is worth while. https://youtu.be/v5dBRmjF8mc In the Video the Author proposes a tool to enable new communication patterns. He asks for fundraising: https://opencollective.com/projectliminality#category-CONTRIBUTE And apparently he got funded. He got like 160 issues yesterday , now its some epics. https://github.com/ProjectLiminality/InterBrainMVP/issues Why is it interesting? If you spend some time going through the README.md you can see that some aspects of it cover things like transclusion or spatial design. I can not help but it reminds me a lot of xanadu. Pretty interesting I will follow up. |
| 12 comments | |
|
|
Nilesh Trivedi
2025-07-07 23:00 #
Folks, can you please point me to recent efforts in Distributed Reactive Programming? How can we build whole systems (spanning multiple simultaneous users as well as the database) in React/Vue/Svelte- like way, instead of just UI components? What are the typical challenges and the unsolved problems? |
| 26 comments | |
|
|
When Leggett
2025-07-02 08:27 #
So obviously ignore this discussion prompt if it seems dumb or out of scope. Its maybe not as "direct" a connection to the future of coding. Lately I've been finding myself wondering more and more often what kinds of agents might be sneaking into different spaces and for what different purposes. On places like reddit, instagram, or bluesky, we know that there are plenty of bots engagement farming or pushing misinformation or advertising or simply acting as fake followers to boost accounts. However, we know that bots/fake accounts are also a common vector for scraping, as it can bypass rate limiting or private areas like this slack. In the last several years, as social media platforms have become enshittified, and the average user has felt less inclined to post, and started spending more time in messaging and group chat spaces like whatsapp, discord, signal, slack etc. In small group spaces, like a personal friend group, you obviously wouldn't have a bot sneak in, but a group chat like this one has thousands of members and it likely would be easy for a bot to get in. Who knows, there may be one or more here now. So here are my questions: - do you think there are bots here? - If so, does it bother you? Do you feel like you want to preserve human discussion spaces from spying, interference, scraping, or being trained on? - Do we need to consider more deeply how the future of computing will be affected by so many non-human users including many malicious actors? - Do we need an improvement at the infrastructure/ecosystem level to securely/practically enable the kind of end-user programming that is commonly discussed here? To own your connections/contacts/community. To have better protocols/standards/etc for communication. Are we really stuck on email as the only really open mainstream communication standard? |
| 12 comments | |
|
|
Oleksandr Kryvonos
2025-07-01 23:35 #
~can someone remind me there is a project that was shared here, a canvas for JS workflows... ?~ found it - https://natto.dev/ |
| 3 comments | |
|
|
Paul Tarvydas
2025-06-15 11:48 #
I created a document repo on github and a channel on discord programming simplicity for anyone interested in discussing and adding ideas... from a substack article, brainstorming SCP We explored how this principle led us from single-machine programming to *Solution Centric Programming* (SCP), which treats hundreds of small computing devices (Arduinos, sensors, actuators) as *new atomic operations* for automating specific problems, requiring *new recipe techniques* for combining them. Unlike traditional programming that forces all code through one paradigm, SCP enables *computational diversity* by letting each distributed node use the most appropriate programming paradigm (Forth for real-time control, Prolog for logic, FP for data processing, OOP for state management) as specialized atomic operations, while connecting them through pure data flow rather than restrictive function calls that impose control flow protocols. The key architectural insight is *Solution Centric Program Choreography* - a hierarchical tree structure where parent nodes contain the recipe logic for coordinating child atomic operations, eliminating peer-to-peer coupling that destroys scalability. This creates a new abstraction layer where solutions are choreographed through structured data flow between specialized atomic operations, each autonomous in their execution but coordinated through hierarchical recipes rather than lateral negotiation - representing the next evolutionary step in programming's fundamental cycle of creating atoms and recipes. |
|
|
Konrad Hinsen
2025-06-13 01:44 #
I think that @Kartik Agaram’s recent devlog post (mentioned in this thread) deserves a thread of its own, outside of the discussion of live programming. The topic that interests me in particular is what he calls the vendor/owner divide, which bothers me as well. More generally, it's a dependency chain from hardware vendor via OS vendor and programming tool vendor up to the owner, end user, or whatever else we'd call the person or team that wants to use computation as a tool for their own goals. Along this chain, everyone has the power to break the work of the people further down the chain, unless there is some counteracting force such as competition between multiple vendors of fungible products. As somebody at the end of the chain, if I want to preserve my agency, I have basically two choices (plus hybrids): I can be selective in my dependency chain, only accepting dependencies whose vendors I consider friendly and ethically sound. Or I can restrict myself to dependencies that are fungible because they implement standards for which there are other implementations as well. Out of the two, my preference is for the latter, which is clearly the more robust strategy. Vendors change over time, and even those that promise not to be evil today can drop this promise tomorrow. Vendors or their products can also disappear for lots of reasons. In fact, a vendor that is serious about being ethically sound should signal this attitude by implementing standards, reducing its own power over its clients. Except of course that there are no standards for most software interface layers, and you cannot create one unilaterally either. Nor quickly, because good standards require many design iterations involving multiple vendors and users. Evolving standards is expensive. There's a third aspect to consider, which is code complexity. For simple enough software, a vendor provides the convenience of a ready-made and tested implementation, but if the vendor disappears or becomes evil, I can maintain the code myself, or convince someone else to do so. That's what early FLOSS advertised as its strength: you can always fork. Except that today's software stacks have grown too complex for this. |
| 28 comments | |
|
|
Joshua Horowitz
2025-06-12 02:27 #
Two related things: • The LIVE Workshop deadline is July 21st, so there’s still plenty of time to get a submission together! Please let me know if you have any questions, or want to talk about a submission. • I’ve been cooking up a LIVE Primer. It’s an overview of LIVE-adjacent research – mapping out some territory, sharing some advice, & curating some citations. It’s rough right now, but I think there’s good stuff in there already. Please take a look and let me know what you think. (Especially if there’s something you wish was in there that isn’t; that would be great to know.) Thanks! |
| 7 comments | |
|
|
Paul Tarvydas
2025-06-08 06:42 #
https://programmingsimplicity.substack.com/p/massive-parallelism?r=1egdky |
| 43 comments | |
|
|
Angus Mitchell
2025-06-04 20:39 #
RFW (Request For Whiteboard) - Since Google shut down Jamboard I've been looking for a whiteboard app that... 1. You can log into from a web app and a mobile app (or 2 web apps) and they stay in sync with each other 2. Is NOT an infinite canvas 3. Is constrained in terms of colors, brush sizes, etc. |
| 1 comments | |
|
|
Kartik Agaram
2025-06-03 12:06 #
Anybody play with the https://playb.it yet? Impressions? |
| 18 comments | |
| # |
Andreas S.
2025-06-02 08:03 #
Hey FoC :wave: I recently stumbled upon this: https://www.youtube.com/watch?v=Qp9jI6L2Tsg https://github.com/muni-town/roomy I found it quite interesting to see how fluid you could go from thought/chat to blog/text (see attachment). Different projects related to AT Protocol are exploring different notions of communication patterns like here: https://cosmik.network/ or here https://garden.co/. Cosmik employes the concept of stigmercy, something which I think would be very useful for FoC and other communities. Foc beeing trapped in SLACK for so long is cruel enough. Of course tools were build but ... One can really see how certain preconceived notions of interaction patterns are starting to break up in interesting ways. a PKM tool is usually for personal reflection( hence the P in PKM) of course I could always take a zettel and expand it or include it in messages, which I still sometimes do. But I think there more to it. As we explorer the patterns of communication. Relating to other people, where does my - self, myself start where does -the others- start? So chat is quite a low entry barrier and a interesting start to start communicating with others. Their project site even has a values section: https://muni.town/values I recently started using anytype.io and was surprised how good the mobile sync worked. Sharing with other people works OK. But then I tried to share a SVG file,... or I tried to create mermaid or a mindmap and view it on mobile... Clojure clerk is a notebook for some computational stuff but I like the Idea of having snippets that can be evaluated which reminded me of projects like: http://cloxp.github.io/cloxp-intro.html or https://lively-kernel.org/ To hit the sweet spot is really not simple one wants to avoid to re-invent all of personal computing just to do some note taking and collaboration... While researching I also found this: https://neurite.network/ I vaguely remember reading something about it here at Foc but the search did bring up anything for me.. I hope that the AT protocol related tools become mature enough such that I can use it for my own zettelkasten which is based on markdown. But I really would like to test out the other collaboration based features. What are your experiences with zettelkasten and collaboration? Could you imagine something like roomy being sufficiently good enough to finally replace SLACK for example? WDYT @Ivan Reese? |
| 37 comments | |
|
|
Ivan Reese
2025-05-28 22:07 #
Here's a fun little game. PbD = programming by demonstration PbE = programming by example What are the other Pb_s? (Please bring "wrong answers only" energy!) |
| 21 comments | |
|
|
Scott
2025-05-27 14:36 #
I've recently been going down the cybernetics rabbit hole and am curious if anyone knows of any attempts at implementing Beer's Viable System Model in software? I feel like it might be a really powerful paradigm for an ai agent/automation framework... recursive systems built around feedback loops with LLMs in the mix for different responsibilities |
|
|
Marek Rogalski
2025-05-22 00:10 #
Procedural Programming + :eyes: + :pinching_hand: = Block Based Programming Functional Programming + :eyes: + :pinching_hand: = Nodes And Wires Object-Oriented Programming + :eyes: + :pinching_hand: = :question: I'm looking for a term that describes a class of visual environments, where behavior is organized into stateful objects, subject to direct manipulation by the user. Examples of those environments might be The Alternate Reality Kit, Automat or Scrappy. I don't think I've ever stumbled upon a term for such a class. Or maybe I'm just not well versed in visual programming nomenclature. Do you know how they're called? Or how would you call them yourself? |
| 12 comments | |
|
|
Isaac Carrasco-Ortiz
2025-05-21 13:13 #
National Digital Inclusion Alliance's Net Inclusion 2025 conference is currently live discussing the intersection between skills using AI and general digital literacy training: https://www.youtube.com/watch?v=e51nusl7Gi8 |
| 2 comments | |
| # |
Isaac Carrasco-Ortiz
2025-05-08 06:55 #
From a health webpage on mental overstimulation. This phrase is particularly interesting to me: “It can feel like you have too many tabs opened on your mental browser and your brain doesn’t know what to do.” What’s the idea behind using technological metaphors to describe something human? Shouldn’t it be the other way around? What does that tell us about the way we make sense of our everyday technologies? Hmm… :thinking_face: |
| 4 comments | |
|
|
Dave Mason
2025-05-07 15:09 #
Teaching Computer Science in the AI Age - discuss! |
| 9 comments | |
|
|
Steve Dekorte
2025-05-05 10:15 #
Is it time to add an AI channel to The Future of Coding slack? It seems like whatever the future of coding is, it will heavily involve AI. |
| 3 comments | |
|
|
Marek Rogalski
2025-05-03 04:54 #
One of the early promises of computer revolution was the universal access to knowledge and culture. Out of curiosity I've just checked how many hours of video would fit on an average HDD. Assuming average HDD size of 11.6TB (as reported by Segate) and an aggressive, but watchable compression (1GB = 3h of video) we would get a total of 34800 hours of video. Apparently this is around (maybe even slightly above) the total runtime of the whole Netflix's library. My conclusion is that it should be now possible to buy Netflix on a drive. |
| 1 comments | |
|
|
Lu Wilson
2025-05-03 00:39 #
reflecting on jam oriented programming... i can't believe i spent so many years being dictator of my projects. what a waste. i now do the jamming approach... it means i MUST accept all changes, even if i disagree with them. if i care enough, i can change them or revert them, but that takes effort, so they usually stay. and for ease, i make everyone admin of my own project. if you submit a pull request or an issue, i just instantly merge and make you admin. then i don't need to be a blocker in future: you can commit straight to main it means the project becomes ten times richer because it's a team effort with everyone pulling it in different directions nothing has to be perfect, and it gets done FAST. it's more open than open source. it's jam source! each day it becomes more hilarious/tragic to me how most HCI and "future of coding" developers keep things so closed off and secret, now that I've experienced this better way |
| 123 comments | |
|
|
Andreas S.
2025-05-02 04:52 #
Have you seen this? I liked the Cultural perspective of it: https://www.youtube.com/watch?v=08PPuE-Y1sE |
|
|
Alex McLean
2025-05-02 01:27 #
Trying to stay on topic, when have you most feared clicking on something? How could you have been reassured via humane programming language experience design? |
| 12 comments | |
|
|
Spencer Fleming
2025-04-30 16:49 #
Still trying to work out how much ought to be the OS's job and how much ought to be the App's job |
| 6 comments | |
|
|
Spencer Fleming
2025-04-30 16:48 #
With that, you can roll back any local computation, branch off of it, etc. |
|
|
Spencer Fleming
2025-04-30 16:47 #
This reminds me of an old USENIX talk that I found very inspiring, on Eidetic Systems, aka recording every input into the OS, write only, forever https://www.usenix.org/conference/osdi14/technical-sessions/… |
|
|
Josh Bleecher Snyder
2025-04-30 09:29 #
Naive question (apologies in advance): What does convention vs configuration mean in a visual programming language? Are there interesting examples of this playing out in practice? |
| 2 comments | |
|
|
Kartik Agaram
2025-04-29 17:53 #
I finally got around to Dave Ackley's latest video report on robust-first computing which @Andreas S. shared here, and it prompted me to zoom out and think about the territory of computation and what we know of it so far in the year 2025. Right now I imagine it as a 3D terrain. Along one axis, analogous to a plan view, I see the following coarse technical approaches to structuring computation, each equally valid: • Computation as the orchestration of precise instructions. • Computation as the learning of matrix weights. • Computation as the orchestration of fuzzy, imprecise cellular automata. Ackley's approach. I think that's it? Are there others? Along an orthogonal axis, analogous to an elevation view, I see social approaches to organizing the means of computation. So far we only have open questions here: • Does computational infrastructure necessarily require authoritarian dictators or at best feudal lords and vassals? Or is it possible to have something analogous to a democratic approach? • Can we reduce inequality between the haves and have-nots of tech knowledge and computer whispering? • Can we design incentives to keep computation working over time, in a secure and trustworthy way? (Can computation ever be biased less towards offense, can defense be viable?) • Can we design incentives to make the means of computation sustainable in their impact on the environment? And along a second orthogonal axis, analogous to a side view, I imagine ways to connect up computation with other fields of human endeavor. Here there has been much progress, though I am running out of steam: • Learning from the arts to improve visual and auditory design, e.g. typography. • Learning from math to better model the world, e.g. numerical methods. • Learning from the social sciences to nudge groups of people in productive and unproductive directions. Coevolving populations with these lessons that will inevitably grow robust to such nudging. • ...? Feel free to point out gaps, additional axes, add examples.. |
| 13 comments | |
|
|
Declan
2025-04-29 07:06 #
Pure computation is pure all the way down, an advantage of this is the ability to verify a result by just putting the inputs in again. This is useful in the real world if you share a result with someone: for example when a bank tells a customer how much their mortgage repayment costs It works not just for one result of interest, but for every other result that one depends on: in other words for the complete workings. So by sharing the pure computation code and it's inputs along with a number, the number is verifiable and you've also shared the complete workings (for free). I exploit this as much as I can in calculang, including while developing models, with reactive visualizations showing me current model behavior for some inputs (with controls; all experimental at this stage). It surprises me that on developer tools, functional programming is not in it's own league in front. There are some application state developer tools that FP techniques enable and some are influential. But I don't know anything about interesting introspection- or validation type tools that especially exploit purity. Anyone know if I'm missing something in particular or have any good references to read on? I might consider a POC exploration on just this idea for some other language (maybe Haskell or PureScript but open to thoughts) |
|
|
Walker Griggs
2025-04-22 10:20 #
"Should technical candidates be allowed to use AI assistance in an interview?" I've had the debate many times over the last two years. My initial stance has always been "of course not, I want to evaluate if they actually understand programming fundamentals." My stance here might be softening. Common responses I hear are • "This is the way people write code now and we should assess candidates in as close to 'real world' conditions as possible" • "Where is line between syntax highlighting, LSPs, and AI code-completion?" • "It should be obvious when a candidate doesn't understand the code they're generating" • "Cursor boosts your output; a productive engineer should always leverage the best tools" My responses to those points vary from "LSPs don't write the code on your behalf", "code completion operates on syntax and not semantics", and "human-in-the loop reduces critical reasoning." I personally find it difficult to discern meaningful signal around a candidates level of understanding while they tap tab. What do you all think? |
| 24 comments | |
|
|
xyzzy
2025-04-17 06:55 #
https://tomasp.net/blog/2015/library-frameworks/ A good comparison can be Qt vs Skia. I agree with most claims of this essay. However, having used many frameworks and after having analyzed why they work well, it boils down to. 1. Good documentation 2. Multiplatform abstraction behind a standard interface 3. Combine many calls into a simple end point (button->draw in Qt vs drawing a button via Skia) If these are addressed by libraries, then libraries with simple callbacks are much more preferrable to frameworks. One problem which frameworks and libraries don't address or hide away is state machines. An app is fundamentally event loop + state machine. Any framework that you use long enough, you will want to peek into how it is actually handling events and customize it. |
| 1 comments | |
|
|
Marek Rogalski
2025-04-16 08:06 #
I've spent a considerable amount of time now figuring out in which "direction" do memory addresses mentally increase. I'm trying to pick a convention for presenting memory in Automat that would make it easier to mentally picture what's happening. No direction is perfect and each one involves some friction when mentally manipulating order of things. The established conventions that I know of are: • Text goes right and down (when lines wrap). Text direction may be pretty much arbitrary when different scripts are involved. • Bits increase towards left (because << shifts bits up) and then up (because of "higher" bytes). Computer science courses teach that "stacks grow down". • Numbers increase towards left (more significant digits go towards left) but for a typical (little-endian) CPU more significant bytes are written towards right. • Points on a cartesian system tend to increase first towards right and up. • In nature things usually grow up. |
| 5 comments | |
|
|
Jamie Brandon
2025-04-04 14:36 #
https://www.scattered-thoughts.net/writing/a-rough-survey-of… I'm curious if anyone knows of languages that have different approaches to the ones I covered here. |
| 2 comments | |
|
|
Karl Toby Rosenberg
2025-04-02 16:20 #
I’ve been thinking about how languages taught at the intro level are usually taught with lots of white lies about how they work, out of necessity. For example, Python’s actual underlying memory model (how everything’s a reference and isn’t copied around) is confusing (arguably), so we avoid teaching that part and oftentimes make all these distinctions between references and primitives (even though everything’s an object). Teaching something more accurate (everything’s an object with references, and oh sometimes values are even referenced via referenced counting) would actually lead to confusion when trying to translate some of this in other languages like C, where everything’s actually a value (pointers are just ints purposed for addressing things). Java is also confusing with all the GC stuff and opinions it has about memory and memory behavior. I would like a first-learner’s language that has the arguably-more-consistent semantics of something like C (“everything’s a value”), but is closer to Python. So I can feel like I’m not “lying” so much. I think the closest thing is C itself, unfortunately, or C++ with a custom allocator thing. Or maybe a hot-take: objective C / ARC are the closest. But really I’d just like a Python with less obfuscation and inconsistency, so it looks more like C with safety on-top and better file imports. Essentially, Python with proper value types for everything, even if a little more challenging. The most explainable language closest to hardware, but easier to use. Just thinking out-loud. I think a Python 3 subset preprocessor that outputs raw C would look close to the language I have in-mind. (I’d like end for blocks too). |
| 34 comments | |
|
|
Kartik Agaram
2025-04-02 07:53 #
I've been thinking about color, and I don't know anything about it. I'd really like my hypertext browser to allow people to adjust color, but without ever compromising contrast. Is there some color space/model like rgb/hsl/CIELAB/Lch that allows you to adjust an author foreground color relative to an author background color, yielding new reader foreground and background colors that maintain the original level of contrast? Ideally I want a single spectrum/dimension/knob that I can adjust to change the hues of one element (say the background color), automatically adjusting the colors of other elements around it. For example, say the background color is white. I reflect it to get a text color of black. Then I get 3 other foreground colors that are rotated by 120 degrees along the color wheel. Now I could adjust the hue to rotate around the color wheel. Or I could reflect to get dark mode. But is there a way that supports both without going all the way to a 2D color space? For example, if you set the background color to medium grey now no foreground color can give you the desired level of contrast. So I'd like to not even represent such a background color as an option. |
| 8 comments | |
|
|
Felix Kohlgrüber
2025-04-02 05:59 #
Hi! it's been a long time since I posted in this group (almost 5 years, wow!). Life changed on my side (working full-time jobs, having kids, ...) but I still tried to follow what's going on occasionally. Thanks a lot to @Mariano Guerra for the newsletter, it's the perfect digest for me to read whenever I have some spare time. I've recently started using Obsidian and it's working great for me to collect and organize all kinds of thoughts. I've used quite a few tools for this over the years, but Obsidian is my new favorite. I'm sure it's been discussed here already, but here's what I love about it: • based on markdown files instead of some proprietary formats • great apps for desktop and mobile • effortless e2e-encrypted sync between devices • linking between files / pages and following those links is easy. I'm using a variation of a Zettelkasten (this link can be useful as a starting point; I can write about my approach if there's interest in it) I'm currently trying to collect my FoC ideas, projects and thoughts into my Obsidian and therefore wanted to see my contributions to this community. I used the Archive tool by @Kartik Agaram and it's been working great. A simple long webpage and Ctrl-F worked beautifully, probably better than what Slack Pro could have given me. Thanks a lot for creating the archive, Kartik! Going back in time was very interesting. One thing I noticed though was that quite a few links that we discussed at the time sadly don't work anymore. With the help of the wayback machine, I was able to still access all the info though. This made me once again appreciate the wayback machine and its importance for the internet. Feels like a donation to the project is overdue. That's all I wanted to share. Have a great day folks :) |
|
|
Paul Tarvydas
2025-03-29 07:28 #
I have come to the conclusion that all PLs are VPLs. The first VPL I learned was assembler. Pond'ring aloud, thoughts welcome... Background: Inspired by the post by @Duncan Cragg, I started to categorize VPLs. I think that I'm up to 9 simple variants. The main knobs that can be turned for PL design seem to be: (1) syntax affected by visualization technology, e.g. 1960s grids of non-overlapping pixmaps called "characters" vs. more modern raster graphics and vector graphics, (2) semantics of control-flow, e.g. 1960s sequentialism implied by line-by-line reading of code and blocking function calls vs. 1970s control-flow isolation like UNIX processes vs. more modern closures (effectively invented in the 1950s :-)). [FTR, assembler is position-based, using crude graphical grids of columns and rows, whereas C is not position-based, using simple eye-candy indentation for human (vs. machine) readability]. |
| 1 comments | |
|
|
Guyren Howe
2025-03-28 11:05 #
“Analog algorithm” is an interesting idea. |
| 1 comments | |
|
|
xyzzy
2025-03-28 05:43 #
I can't take AI seriously. Not my video but I have worked with ebsynth ... it is a completely analogue algorithm. Style transfer without AI. It is built on old analogue aglorithm called patch match I believe. https://dcgi.fel.cvut.cz/home/sykorad/ebsynth.html https://www.youtube.com/watch?v=tq_KOmXyVDo The future of code licensing is even stronger copyright protections for software authors / artists. AI has made a mockery of opensource and creative commons. https://blog.xyzzyapps.link/2025/03/08/intellectual-property… |
| 10 comments | |
|
|
Denny Vrandečić
2025-03-19 04:47 #
I found the holy grail: Vibe computing + Literate programming = :heart_on_fire: |
| 3 comments | |
|
|
Paul Tarvydas
2025-03-15 20:43 #
Rhetorical question?: how would your programming workflow change if you deeply believed that creating SCNs was cheap and easy? Perl leaned heavily on REGEX. REGEX was once thought to be hoary and problematic. Perl made it accessible. New kinds of things were invented when Perl started being widely used. T2t is “better” than REGEX, because t2t makes it easy to deal with patterns containing recursive nesting. CFGs, like YACC, make it possible to parse recursively nested text, but, CFGs need painful, full specification of too much detail. If you had a way to specify pattern-matching using tiny DSLs that didn’t cost a lot of time to build, how would your workflow change? ['t2t' leans heavily on PEG and esp. OhmJS] [SCN === Solution Centric Notation, essentially a nano-DSL, I think of Richard Feynman breaking away from mathematical/Gutenberg notation and inventing and using Feynman diagrams. Language affects thought, notation affects thought]. |
| 18 comments | |
|
|
Jonathan Edwards
2025-03-14 10:14 #
You should definitely submit a demo to the LIVE Programming Workshop this year! It is being held entirely online so no excuses. Submit by July 21 [is this the right place to post this?] |
|
|
Arvind Thyagarajan
2025-03-13 22:09 #
why ~is~ does it feel like the world of "what people and businesses are paying for today to lower the barrier to entry for computational needs" is an almost non-intersecting set with "what excites us about lowering the barrier to entry for computational needs"? |
| 4 comments | |
|
|
Duncan Cragg
2025-03-13 05:02 #
The Data-First movement: https://duncancragg.substack.com/p/the-data-first-movement :hugging_face: |
| 29 comments | |
|
|
Paul Tarvydas
2025-03-13 04:20 #
Lua is 1,250x larger than Sector Lisp. Rust is 750,000x larger than Sector Lisp. Are my numbers and data correct? https://programmingsimplicity.substack.com/p/programming-language-sizes?r=1egdky |
| 3 comments | |
| # |
Orion Reed
2025-03-11 05:49 #
I'm not really sold on ZUIs (zoomable user interfaces) but I became a bit more enticed once I realised that you could make ZUIs for graphs instead of trees. Where you can zoom into things and eventually get back to where you started... I feel like (aside from the potential motion sickness) it induces this visceral sense of how software and data topologies are governed by laws that we made up... And that, so long as we don't break any actual physical laws we are free to make up the semantic rules as we please... Anyway, made this zoomable hypertext thing the other day to figure out how you would do infinite zoom in an infinite coordinate space that has this weird graph topology, where you can have A --inside-> B --inside-> A Ended up with what I called a Shifting-Origin Graph which has a series of matrix transforms that can traverse through the graph with you, keeping floating point precision at bay and keeping memory usage fixed. I would be curious to hear takes on ZUIs here, I feel like there's a more general view on them that would be more compelling to me, I got a glimpse of that as I made this experiment, realising that it would open up some interesting semantics that aren't really to do with ZUIs, and more to do with the ability to warp space in new ways. |
| 9 comments | |
|
|
Paul Tarvydas
2025-03-10 04:15 #
I’m curious about your thoughts on this idea: Glamorous Toolkit and Live Programming environments seem to essentially be REPLs that use modernized input and output technologies. Back in the 1950s, REPLs used the best I/O and interface tech they had back then - mostly text-based command lines because computers couldn’t do much else. But now, environments like Glamorous Toolkit make output look better with graphics instead of just printing text, and Live Programming environments have GUIs with interactive stuff like sliders to change things while the program is running. The only tricky part in designing modern REPLs seems to be figuring out how to keep things flexible while still working with strongly-typed, functional programming languages. Do you think I’m oversimplifying these modern programming environments? Am I missing something important about how they differ from traditional REPLs? |
| 13 comments | |
|
|
Paul Tarvydas
2025-03-10 04:15 #
I’ve come to believe that we’re missing out on approximately 90% of what’s possible because of how we program. It’s not just about the syntax, it goes much deeper - it’s rooted in culture, religion, dogmatism, and closed-mindedness. I think the word “function” has been overused, and the emphasis on efficiency has gone too far. Here are a few thoughts… YMMV. What do you think? How Did We Get Here? The Best Programming Language |
|
|
Paul Tarvydas
2025-03-01 13:43 #
Thinking about async vs. sync. https://youtu.be/deaXisgRQ0Q . Being able to "reason about" timing (intuit, debug) is more important today than it was in the early days of computing. Our current programming languages emphasize the biases of the early days of computing. |
| 18 comments | |
|
|
Duncan Cragg
2025-02-28 14:20 #
A number of future-of-computing projects including Dynamicland, many by Ink & Switch and the work of @Alexander Obenauer have all been evolving along a similar theme. I'm calling it "The Data-First movement"! https://open.substack.com/pub/duncancragg/p/the-data-first-movement |
| 11 comments | |
|
|
Oleksandr Kryvonos
2025-02-25 01:46 #
RE: bycicle for MIND --- regular bycicles do NOT automate everything YOU still need to pedal YOU still need to navigate --- therefore a "bycicle for MIND" should NOT automate everything YOU still need to THINK |
| 30 comments | |
|
|
Paul Tarvydas
2025-02-23 10:45 #
More remembering what's at the bottom of all this and wondering if we can make it simple again ... https://programmingsimplicity.substack.com/p/subroutines-are… |
| 7 comments | |
|
|
Stephen De Gabrielle
2025-02-20 12:14 #
Came here to find podcast discussion … am I in the wrong place? |
| 20 comments | |
|
|
Karl Toby Rosenberg
2025-02-17 11:59 #
I’d maybe reframe in terms of what those points let you do. (The so what?) |
| 3 comments | |
|
|
Federico Pereiro
2025-02-17 11:55 #
For fans of the spreadsheet (@Duncan Cragg et al): > In essence, a spreadsheet is immensely powerful because it has three properties: > > 1. All of its data is contained in cells, each of them with an address. > 2. A cell can reference another cell. > 3. When a cell changes, all of the cells depending on it change as well. I wrote the above just now. Do you think I'm on the money here, or would you summarize the spreadsheet's power with different points? |
| 6 comments | |
|
|
Paul Tarvydas
2025-02-17 08:59 #
Thinking about coroutines and whether we can reduce bloat by rolling-our-own... https://youtu.be/PSYj2OQwi8Y |
| 13 comments | |
|
|
Oleksandr Kryvonos
2025-02-11 01:17 #
What if we use GPU / NPU / TPU to run Prolog several magnitudes faster? Using technique of encoding words into numbers as LLM does? |
| 14 comments | |
| # |
Paul Tarvydas
2025-02-10 13:32 #
Trolling for ideas on which way I should go. I have too many choices in front of me and way too many learning curve(s) to go down. I've got a drawware REPL that uses 3 windows: (1) draw.io, (2) browser that displays output of run, (3) python glue running in a terminal window that watches the timestamp on the draw.io file, and spawns a compile/run cycle when the drawing changes. The python glue creates 2 websockets (1) a 1-way conduit to the browser to send it JSON key/value objects (strings) and (2) a 1-way conduit from the spawned compiler which sends key/value messages which get forwarded to the browser. The effect is like printfs but in a browser instead of a console (and more useful than printf because it doesn't need to be sequentially inserted into the circuit). It knows how to shell-out to command-line commands. This is a VSH - a Visual SHell to replace /bin/bash. The whole mess works "fast enough" to act as a code development REPL. What's the best way to package the whole thing into a singly-deployable app? (single from users' perspective, maybe retain all processes and windows). Should I dump the browser and go with some local GUI package (what?). Should I be looking at redbean? Should I be looking at Glamorous Toolkit? CLOG? Keeping the browsers and sockets makes it scalable across distributed machines and might result in new ideas. I want to keep draw.io, since it saves me a lot of work (it's a PITA to use, but better than anything I could build myself). Keeping Python and JS lets me forego actual coding (I just ask AI to build the thingies - AI has been trained on zillions of lines of code in JS and Python). I'm good with Common Lisp, Python and JS (but, hand-written JS usually creates mysterious failures that are hard to debug. Lispworks debugger is the "best", next is Python). I'm good with cranking out little nano-DSLs using OhmJS (t2t), so I can generate code instead of writing tricky code. This is VSH, using websockets instead of UNIX pipes. Using 2D node-and-arrow drawings instead of 1D text on the command line shell syntax. |
| 3 comments | |
|
|
Tak Tran
2025-02-09 09:46 #
:robot_face: I’m reading about weak robots (Panasonic also made a “farting cat robot” called Nicobo), and I’m loving the idea: > Exposing “weaknesses” instead of hiding them inside creates a space for connection in a relationship. Furthermore, it creates a relationship in which both parties can compensate for each other’s imperfections and draw out each other’s strengths. The “weak robots” prove this, says Okada, and the same principle applies in human-to-human relationships. > “However, we have always lived in a society that encourages people to be self-sufficient, so it is difficult for us to show our weaknesses. Still, sometimes a weakness can turn into a strength when we expose it and trust the other party. I hope that ‘weak robots’ will serve as a model for restoring rich and flexible relationships to society, and will help loosen the intolerance that exists in the world.” > “Weakness” dissolves hierarchical relationships and the boundaries of doer and receiver, and in this sense, it is a “strength” that enriches the relationship. The “weak robots” taught me the essence of what we should aim for in a diverse society. Also love the idea of soft robots like Toyota’s Punyo. They’re such a refreshing take on robots, as opposed to the dystopian humanoid robots that the big tech companies seem like to be striving for :grimacing: This rabbit hole started from seeing a Megatron transforming robot, which initially triggered all my dormant “thats, so cool!” childhood dreams - but seeing it fail at a few voice commands, and being quite unnatural outside of the preprogrammed/animated tasks^, I was yearning for better forms of robotics. About 7 yrs ago, I thought cozmo/vector, had potential, esp with their team’s ex-pixar experience, but these products seem to have become hollowed out after running out of startup cash and being sold off :cry: The programming aspects of these consumer robots are pretty disappointing too - mainly relying on block based programming, which seems quite primitive compared to what the hardware is capable of. I guess the more modern approach is to use some blend of ChatGPT-esque interface, but that’s quite clunky too. Anyone know of any delightful programming interfaces for robots? Or other interesting alternatives to the Terminator style robots coming out? --- ^ To be fair, when it worked, it was amazing :heart_eyes: They even got the original voice actors, to add to the nostalgia value. |
| 1 comments | |
|
|
Andreas S.
2025-02-09 02:34 #
Hey :wave: this one could be interesting: https://news.ycombinator.com/item?id=42983275 https://antirez.com/news/145 Is programming culture collapsing under its own frustrations(technical and social and all in between and towards each other?)? What do you think? |
| 4 comments | |
|
|
Scott
2025-02-08 08:55 #
Has anyone here spent much time thinking about how the business of software changes as AI models, techniques, and devtools improve? In particular, I've been spending a lot of time thinking about the implications of: 1) what happens when things that previously took 6mo-1y to build out are quickly turning in to $0.10 API calls today and once models are small enough, architectures optimize more, and hardware improves, transform into a low level OS primitive tomorrow 2) do we need to start accounting for software as an asset differently when the payback period gets measured on a much shorter timeline? 3) internally, how much time do we need to focus on reducing our Time To Rebuild vs letting external forces reduce it for us? |
| 17 comments | |
|
|
Tomas Petricek
2025-02-05 03:54 #
I would like to recreate an example of some nice data wrangling / data cleaning user experience based loosely on programming by demonstration. The classic reference for things like this I know of is Wrangler (https://dl.acm.org/doi/abs/10.1145/1978942.1979444). Are there nicer newer things I should be looking at? |
| 3 comments | |
|
|
Karl Toby Rosenberg
2025-02-03 17:58 #
A bit off-the-wall, but I’m thinking about what true “spatial computing” (or insert buzz-term here) visual programming could look like, or instead of the word “true”, interesting, pragmatic, and unique. I’ll post something if I think of anything at all, but in the meantime, I’d be curious to hear thoughts. One thing I don’t want to do is rely on wire spaghetti everywhere. To me, interesting problems arise because of the spatial component. Things going out of view. |
| 59 comments | |
| # |
Jon Secchis
2025-01-30 19:37 #
Hey, folks. I'm experimenting with a universal structured input interface for my research project. The idea is that commands/functions will provide a schema and invoking them prompts the user with a form. I'm pushing for super tight constraints on information density (I want interfaces to spread over time to save screen space, non-negotiable). Now since inputs are going to be generated I cannot have exceptional designs/behavior – it's all going to be rigorously data driven and I can only affect the design/experience by changing the data model. Below are two videos showing how a user would invoke a function for data input. Each video represents a distinct data model. The one with a tabular data model yields a short "time-to-first-field" (less overhead) interaction. The one with a composable tree model (much much more powerful) yields more overhead (2 more steps to reach the first field). Can you share your opinions? Not seeking any specific kind of feedback, just wanna hear your thoughts. |
| 1 comments | |
|
|
Jason Morris
2025-01-30 15:56 #
Is it neuro-symbolic AI if a generative AI system is used to generate a symbolic representation, which is then modified by a human user, and provided back to the generative AI in a later phase? Or does neuro-generative AI specifically require automated _reasoning_ over the symbolic knowledge? I'm playing with a system for editing propositional argument maps that were generated by an LLM, and I'm not sure that counts. Is it "reasoning over symbolic knowledge" if a symbolic data structure is only being used to generate a graphical UI? It seems borderline, but I'm inclined to think not, and if we aren't reasoning over it, it doesn't count... |
| 4 comments | |
|
|
Mariano Guerra
2025-01-30 08:37 #
How might AI change programming? Interesting list of questions to think about |
| 3 comments | |
|
|
Oleksandr Kryvonos
2025-01-29 01:41 #
I was sceptical about LLMs up till yesterday, what changed? - arrival of Deepseek R1 Do I think it is "Sputnik moment" - not entirely, I think it is more like an "Apple I moment" - in a sence that now more people can experiment with this idea, And the tools are no longer in the hands of only big players. I will explore the combined approach - I will use LLM with some simple workflows, For example verification/critique of answer first. And I will research the subject more carefully. I do not have powerfull hardware - Apple M1 and SteamDeck , So I hope that these limitations will benefit me. |
| 1 comments | |
|
|
Jim Meyer
2025-01-29 00:49 #
AI-coding (chat) to create UIs — working software you can own — is the "worse is better" existential threat to traditional design tools and no-code. This is as big, or bigger, than the "worse is better" that JavaScript pulled off for the Internet. Chat is slow, but it gets the job done in a super accessible way, hence the "worse is better". The real prize will be to combine the best parts of chat with the best parts of the canvas in design tools / no-code tools. |
| 1 comments | |
|
|
Matt Rasmussen
2025-01-27 05:05 #
I've been thinking about what libs and pkg indexes might look like as coding assistants become the norm. What if instead of packages providing a post_install.sh script (to regex config, add symlinks), they had a post_install.md prompt to help integrate the code into your app. Libraries and packages indexes (especially language specific ones) have been a boon for code reuse. But they can only be used for code that can be cleanly abstracted. I often encounter chunks of code I wish could reuse as a lib, but I can't because I can't abstract it well enough But if you wanted to package up a partial table schema and some prompt about how it could be rendered in a UI, then the package manager+coding assistant could auto merge the partial schema into the user's existing schema and even make the right UI updates to show the new fields This might really help when building apps using coding assistants. Having assistants write so much code from scratch still feels unpredictable. What I really want is to be able to suggest from an index of code fragments and prompts which things to glue into my app. Such a package index would encourage open source contribution of prompts plus pre-made code fragments. I'm interested in others thoughts. |
| 6 comments | |
|
|
Jon Secchis
2025-01-24 15:14 #
I just realized that if browsers could display notification badges when a site is closed and showed it on the bookmarked item in the fav bar while the site is not open (no tabs), that'd be super cool and useful! Like I could visibly place sites I commonly expect traffic and allow them to fetch notifications in the background such as this very platform, email, etc. Then I wouldn't need to open the site, "waste" time/resources just to check for new messages and such |
| 3 comments | |
|
|
Xavier Lambein
2025-01-23 01:11 #
A thought occurred to me while checking Kartik Agaram's post on #devlog-together A Web page is a convenient medium to write a small application for yourself and distribute it. But it's also limiting, because of the browser. You can't easily edit local files, requests are limited by CORS, you can lose data if the browser's cache is emptied, etc. So I'm wondering: is there a sort of "browser for local apps", which would be just a webview with some of the browser's limitations lifted? For example, I could use Kartik's single-page app for annotating text, but instead of saving my changes by downloading the saved file, it would use the filesystem directly. |
| 39 comments | |
|
|
Federico Pereiro
2025-01-21 12:56 #
Hi everyone! I just posted a short article with three thoughts on the "AI summer": https://federicopereiro.com/ai-summer/ If anyone has similar (or contrasting) experiences, I'd be glad to hear them! • UI through AI: the possibility of replacing more parts of the UI with AI • LLMs shrinking the area of training with own data • Temperature rising |
| 2 comments | |
|
|
Karl Toby Rosenberg
2025-01-21 10:03 #
I found that indentation in programming languages like Python, at least with some of my students, seems to be a point of confusion. This idea of introducing spatial thinking and jumping around seems to conflict with our learned way of reading text on a page. The closest thing is textual paragraph indentation. Maybe there are some studies that contradict me, but couldn’t braces or begin/ends actually be better? Or something built-into the editor. Why couldn’t this be acceptable? # instead of: Okay it’s hard to read, but it makes me think: any block of code could really be its own function, and suppose we had a kind of function that was purely an inline macro to jump to without any stack rules. The goal would just be to make code look as procedural/linear as possible. if bla do_bla() else other() Sure this would probably require more annoying steps and jumps for some, but I do wonder how it might impact early learners or maybe prove useful (or not useful) for understanding control flow Maybe if an editor could automatically inline code folding off and off with these macros… Probably more of a structured/dynamic editor that isn’t just pure text. I’m sure this path has been followed before, but I wonder. It’s really just closer to ASM languages with the conditional jumps and islands of code. Strangely, I find those pretty not so hard to understand. No nesting. |
| 21 comments | |
|
|
Paul Tarvydas
2025-01-21 08:37 #
Doodles for discussion towards simplification of computers for non-programmers. |
| 6 comments | |
|
|
Anselm Eickhoff
2025-01-18 05:45 #
Hey folks! Unique chance to influence a future Alan Kay talk! 1. If you could ask Alan Kay anything, what would you ask? Twitter thread / Bluesky thread 2. Now he has some questions for you! Twitter thread / Bluesky thread Feel free to reply here as well |
|
|
Gregor
2025-01-17 10:00 #
I just asked over on bsky: > I'm morbidly fascinated by Business Process Modeling. On some level it's exactly what I want: end user programming. > But then the only people I heard speak positively about it are vendors, which is very much not what I want > > It's also a non-topic in the alt programming circles I frequent. Any takes? I guess I could've just put it here. Curious if anyone has thoughts on it |
| 20 comments | |
|
|
Paul Tarvydas
2025-01-16 06:34 #
As I understand it, to achieve true concurrency on a single computer, you need to ensure that app code sits in one of the core-private caches (L1, L2, but not L3). Thoughts |
| 16 comments | |
|
|
Daniel Harris
2025-01-04 07:08 #
"Our tech is shaped by our need to make money". Apps and services are discrete items because they need to be packaged for sale or hire. These are my New Year musings. I'm curious if anyone else has thought about what influence our need to make money has made on the shape of our tech. App stores definitely promote the idea of discrete units that can be sold/hired because they make a cut of the transaction. I'm sure there's also an I made this factor playing out. I guess I'm wondering what if collaboration was the pervasive modus operandi? What would our tech look like then? What if we didn't need to package apps up as discrete branded units? What would the tech world look like? How would we build functionality? What if we never needed to earn anything from software? How much better could it be? What restrictions do we place on apps because we need to make money from them? And how much better would they be if we didn't need to do that? Purely from a technology angle. Even though there are loads of non-profit open source projects creating tech we are still stuck in the more pervasive paradigm of packaged units of code. How much better could we be? Of course, this is a pretty simplistic view of the world but anyone ever thought about this stuff? |
| 17 comments | |
| # |
KP Kaiser
2025-01-02 06:57 #
on a similar note, I'd like to have animations on diagrams of ideas for a blog post I'm working on. what sorts of tools or libraries should I be using to make this easier? I'd like to add a button to send a message, and animate how it flows from the encoder to the decoder |
| 29 comments | |
|
|
Paul Tarvydas
2025-01-01 14:01 #
I'm thinking about compiling this diagram to code. I don't know if this thought experiment should be posted to thinking-together or devlog-together. |
| 16 comments | |
|
|
Iacob Nasca
2024-12-29 18:20 #
does anyone work on making a programming language ? and if so, can you share a repo or some notes ? I'm curious what features are you implementing and what programming language are you using do develop it and how you do the codegen part. I'm currently struggling quite a bit with LLVM |
| 25 comments | |
|
|
Jason Morris
2024-12-20 08:53 #
I have been working with large-ish knowledge graphs on and off over the course of the year, and I keep running into the same problem... my intuition for what I have done when I modify the graph and how it will effect everything else is just dismally bad. I make what seems like will be an incremental change, and it doesn't do what I expected, or if it does, it breaks all my algorithms. This happens with other data structures, too, obviously. But with graph data it happens far more often, as in nearly always, and the time between "it isn't working" and "oh, I know how I broke it" is much longer. So I'm wondering, assuming that my experience is not unique, is there something about graphs that makes them harder to grok? The absence of a clear serialization, the absence of order, complexity of structure? Or is it a UI problem, and if I could just see what I was doing it wouldn't be so bad... Often, when I come to a particularly hard problem, I sample and visualize the graph, and learn that the previous three problems were not correctly solved. So visualization helps, but is that enough? Or is there something fundamentally inhuman about large, dense graphs? |
| 27 comments | |
|
|
Alex North
2024-12-20 00:48 #
Does anyone know of any DSLs or similar that are specific to graph/chart drawing? I.e. a language that defines a function from data to image, specialised toward visualising data? If not, what’s the closest thing? E.g. is there a JS chart-drawing library with an API that feels close to a DSL? |
| 7 comments | |
| # |
Kartik Agaram
2024-12-08 20:13 #
I still think about this every once in a while. |
| 1 comments | |
|
|
John Christensen
2024-12-08 10:16 #
Does anyone have recommendations/resources (blogs, papers, implementations, etc.) on rendering hand drawn curves? Currently I'm just going from a raw list of cursor positions to a simplified list of Bezier curves using Schnieder's algorithm. I want to try using pressure/tilt values from a cheap drawing tablet to draw more "natural" curves, but I don't currently have the vocabulary to find what work has been done in this area. Also interested in any adjacent UX ideas for this type of interaction :) |
| 5 comments | |
|
|
Nilesh Trivedi
2024-12-06 06:13 #
Debian is currently struggling with allowing UTF-8 in usernames. I wrote about various challenges involved in NAMING things (i.e. human-readable unique identifiers for concepts/topics or people etc): https://github.com/learn-awesome/learndb/wiki/Naming-Things |
| 7 comments | |
|
|
John Flockton
2024-11-30 06:09 #
Hey folks! Bit of a random question, but can any one think of any language interpreters which parse text straight to bytecode, omitting the AST step completely? Quick.js is one of the most well-known (https://github.com/bellard/quickjs/tree/master) but I wondered if any one knew of any other interesting examples for other languages? |
| 6 comments | |
| # |
Alex McLean
2024-11-22 05:35 #
Love this (partly) analogue modular live coding system for 3d printing by Maas Goudswaard |
| 17 comments | |
|
|
Kartik Agaram
2024-11-21 12:49 #
Bret Victor's PROCESS |
| 3 comments | |
|
|
Mariano Guerra
2024-11-19 02:04 #
What do you think of "It is better to have 100 functions operate on one data structure than 10 functions on 10 data structures."? If you agree, what is that data structure for you? |
| 24 comments | |
|
|
Sam Gentle
2024-11-15 15:50 #
Random thought about Things Spreadsheets Got Right – I've heard a lot about "no invisible state" etc, but another interesting thing about spreadsheets is that they treat data as a first-class citizen in a way that most programming models don't. In a conventional programming language, you model processes and leave the data implicit; in a spreadsheet, you model data and the processes are implicit. The data is what you see in the cells, and the processes are plumbing that you only see by inspecting the cell that the data lives in. What other programming systems start with the data you want to process before you write the process itself? And maybe spreadsheet programming's lack of implicit state is actually a consequence of this data-first paradigm, rather than an end in itself. In fact, even calling data "state" implies a kind of process-first mindset, only conceptualising data through its relation to a process. And this could be a key blind spot for programmers creating systems for non-programmers, or rather process-first people creating systems for data-first people. |
| 15 comments | |
|
|
Nilesh Trivedi
2024-11-11 01:49 #
Somewhat off-topic but I saw a lot of people moving to BlueSky, decided to read up on the underlying AT protocol and its promise of decentralization and found things I did not like. Posted some thoughts. |
| 3 comments | |
|
|
Paul Tarvydas
2024-11-09 13:34 #
Thinking about multi-paradigm programming. Why FP isn't enough, IMO... https://programmingsimplicity.substack.com/p/single-paradigm… |
| 8 comments | |
|
|
Jared Forsyth
2024-11-09 05:22 #
I've put together some thoughts about syntax, they're pretty roughly defined at the moment, but I'd love to get your feedback! https://gist.github.com/jaredly/593d66a955b09572f3810b43b75a22a1 |
| 116 comments | |
|
|
Guyren Howe
2024-11-06 16:46 #
I am quite interested in Event Handlers. In college, I remember in my languages course discussing how you could have static scope or dynamic scope — whether a non-local identifier is searched for in the scope where the thing being called was defined, or in the scope where it’s being called. Static won out, because in general it’s easier to reason about. I mention all this, because I think I understand what Event Handlers are and how they work, and afaict, they’re just “a thing with dynamic scope”. That all seems fine and good, but I never hear EH being described that way. Maybe because folks have forgotten about dynamic scope? |
| 8 comments | |
|
|
Paul Tarvydas
2024-11-03 18:24 #
For discussion...The face of hardware is vastly different than it was in the 1950s and as it was in the early days of computer-ing, when concepts like programming languages and operating systems were invented. I think that this means re-imagining how we use what we've got, instead of just tweaking what we've got. It augments the meaning of "programming". To start things off, here are some thoughts: https://open.substack.com/pub/programmingsimplicity/p/the-fu… |
| 2 comments | |
|
|
Jonathan Edwards
2024-10-28 07:46 #
My talk on the future of coding: https://www.youtube.com/live/4GOeYylCMJI?si=_S4UEmLvzTMx8xCA&t=2285 |
| 12 comments | |
|
|
Walker Griggs
2024-10-21 09:14 #
I'm stewing on the idea of a "literate codec" -- the "quite OK" ecosystem feels like a good place to start. Can anyone recommend modern alternatives to CWEB? |
| 21 comments | |
|
|
Mariano Guerra
2024-10-21 01:13 #
Should we co-locate a workshop at Programming 2025? Here are some questions and some ideas for answers: • Name? I propose "Futures of Computing" • Scope? From the name I think it should bring together this and adjacent communities like causal islands, ink & switch, local first, Homebrew Systems Club, whatever @Lu Wilson's :frog: cult is about • Format? Short hands on demos plus unconference |
| 12 comments | |
|
|
Paul Tarvydas
2024-10-15 07:32 #
Towards a Better REGEX: https://programmingsimplicity.substack.com/p/towards-a-better-regex?r=1egdky |
| 3 comments | |
| # |
Brian Hempel
2024-10-09 17:27 #
Is there a citation/reference or name for the idea of the gap between the power of spreadsheets and the power of general purpose programming? |
| 29 comments | |
| # |
Alex McLean
2024-10-09 09:14 #
I've realised what dynamic media and algorave have in common - they're both 80% community development and 15% projector placement |
| 3 comments | |
|
|
Mariano Guerra
2024-10-07 11:13 #
do you know of a good formal specification of the semantics of spreadsheet evaluation? |
| 7 comments | |
| # |
Mariano Guerra
2024-10-07 01:55 #
It takes two to think > Despite the variety of creative approaches practiced by different scientists, one tried-and-true though often overlooked — trick for generating new ideas stands out. It may sound trivial, yet it is as reliable as it is simple: talk to someone. By talking with other people, we not only pool the information or ideas that each of us individually lacks, but we are also able to improvise new thoughts that are not accessible to us alone. In this episode, Itai Yanai and Martin Lercher talk through the ideas in two of their editorials (available at https://www.nature.com/articles/s41587-023-02074-2 and https://genomebiology.biomedcentral.com/articles/10.1186/s13059-021-02575-w). |
|
|
Rafi Khan
2024-10-02 17:52 #
Would anyone be interested in a browser based smalltalk environment that tries to simplify the task of building software? |
| 7 comments | |
|
|
Tomas Petricek
2024-10-01 16:59 #
This is a very random thought - but something that I've been occasionally wondering for some time now. If we have lambda calculus as a model of functional languages and Turing machines as a model of imperative languages, what would be a good model for programming systems that have "document" as the basic underlying structure (Subtext is an example of this) - i.e., you have some tree structure and the program evaluates by modifying this document - appending new things or rewriting evaluated bits. (Lambda calculus itself is basically a tree, but what if this also allows imperative document edits?) Could this be something like a "Turing machine" that works on trees rather than tapes? There would be "current location" which can move in various ways around the tree and modify it. If your document has references (perhaps you can have ../../foo to refer to foo of a parent of a parent), the machine would have to somehow walk up the tree, remembering that it wants to copy a value back to the original location - and then walk over the tree back to put the value in place of the reference). Is this something completely silly or something that lots of people have already done but under different names? |
| 18 comments | |
|
|
Andreas S.
2024-09-30 04:13 #
Hey :wave: I was recently searching again how "usable" "AI" became. So I stumbled on this tool: pinokio . Its all just JSON. Before just evalutating the tool I might describe the criteria I would be interested in. Broadly speaking I would like to have tool similar to what we see in this clip: https://www.youtube.com/watch?v=HGYFEI6uLy0 Consider The following more specific scenario: I have a PKM Zettelkasten and I have some friends. Now my workflow is to write and then to publish. I want to provide for them a Voice assistant that can summarize contents based on various parameters: By time e.g. topics of last 3 months, last week. But I also want to provide overviews on specific topics as well as interesting interconnections. Do you know of any tools that could help with creating such use cases? |
|
|
Kartik Agaram
2024-09-28 10:47 #
Today in non-convivial computing experiences: I found out a modern car can get into a state where it won't turn off. And can't be put into neutral (so it can't be towed). |
| 4 comments | |
|
|
Tomas Petricek
2024-09-25 14:45 #
I've been looking at programming by demonstration recently (somewhat inspired by Pygmalion). There are some nice recent examples of using PbD for things like data wrangling (clean up data, extraction, etc.) and I know some examples for visual things (bar chart) - but I was hoping to use PbD to create something like TODO list app - do people in this group know if there are any systems (recent or ancient) that do something like this? I actually have a prototype where I can construct adding of new items to the list using PbD (you do a sequence of actions to create and add an item and then you can replay that), but other things are trickier - e.g. to count checked items or to remove items that are completed, there needs to be some way of parameterizing the actions (so that they can be applied to all items) and specifying pre-conditions (so that they only apply to certain items) - I'm really not quite sure how to best do those... |
| 14 comments | |
|
|
Paul Tarvydas
2024-09-23 18:17 #
Functional Programming Is Letting Us Down https://open.substack.com/pub/programmingsimplicity/p/functi… |
| 9 comments | |
|
|
Jouke Waleson
2024-09-23 00:41 #
Not sure if this is the right place to post this and whether this is interesting to this group, but I gave a short presentation last week about the future of programming systems and curious what you think about it. I wrote it down in a blog post here: https://blog.waleson.com/2024/09/the-future-of-programming-systems-four.html There are four thoughts that I think will shape the future: • Software development systems have a lot of vestigial parts (left-overs from the way it evolved) • Understanding is crucial to development, and with the right mediums we can understand the subject much faster • Most software platforms developed bottom-up, from the silicon, instead of focusing on the needs of the people • Software is truly different from other technologies in the freedom it gives us, so we can and should invent new abstractions that make things simpler than they are now This isn't in the post, but I think that in the future we'll see: • Great integration between design tools, version control, IDEs, databases, monitoring & logging systems. • High-level concepts as first class systems in the programming systems. Simple examples are an email or phone number type as a database primitive, instead of strings. • Better reasoning / business logic rules so that IDEs can give feedback on "you are not allowed to store PII in this database". This way all stakeholders can collaborate and the system can check correctness much better, and we require less discipline/in-depth knowledge from the team members. I suspect most of these ideas have come by in this community already, but still curious what you think! |
| 6 comments | |
|
|
Dany
2024-09-22 23:31 #
Should code completion preselect in the dropdown? For example, if I write "object.l", this opens a dropdown with "length". Should the length be selected, so pressing "enter", inserts it directly or should I first need to press "down arrow"? In visual studio, it is not preselect if I write a function, but does preselect for members. Is there some common approach? |
| 2 comments | |
|
|
Declan
2024-09-22 17:03 #
I have lots of functions that map sets of inputs to values - depending on some rules (if branches). Now I want to enumerate all the rules/code paths; it will help me to analyse, optimise, explain, understand. This can't be new, I guess it should be a thing that's feasible in any functional programming language. Maybe there is a name for this? Or a tool that does this? I'm thinking about writing something, but it seems like a typechecker like tsc would have a lot of related logic, and if I can I'll experiment using some other friendly tool first. Any tips/references please shout, thanks! |
| 3 comments | |
|
|
Christopher Shank
2024-09-19 12:13 #
I like this metaphor of translucent software both as a callback to the translucent hardware aesthetic of the 2000s, but also to progressively display the underlying mechanisms of software if you want to see it. https://x.com/lesliexin/status/1836643348490187183 |
|
|
misha
2024-09-17 03:36 #
What is "program"? essentially, conceptually. |
| 19 comments | |
|
|
Jasmine Otto
2024-09-16 16:02 #
I am now blogging about design engineering in organizations that deal with lots of domain knowledge(s). This post covers metrics that don't do what your manager thinks they do, and why interdisciplinary work has trouble finding a good home. https://designengineers.substack.com/p/the-myopia-of-professionalism |
| 8 comments | |
|
|
Beni Cherniavsky-Paskin
2024-09-15 07:01 #
Are there languages that emphasize the single-datum <=> collection-of-data duality? E.g. making loop-with-if <=> filter-on-the-whole look very similar? But that's just a programming curiousity; I'm more interested if there are any mind bicycles that help one think about local vs. global rules? Physics is rich with examples where seeing both perspectives is insightful: • local F = ma <=> conservation of potential energy independent of specific path (for certain forces) • Gauss's laws relating single-point "differential" <=> volume/surface "integral" formulations of Maxwell equations • Noether's theorem is certainly up there, relating shapes of laws with conserved stuff, but I'll admit over my head... Example task: For a while now I've dreamed of making a model of weather that's simple enough for paper+pen+tokens, or generally something "board game-ish". Lies-to-children are fine, but would like it to demonstrate at least basic mechanics: (A) wind caused by hotter air rising and leaving a vacuum; (B) evaporation over sea => rain over land (C) "rain shadow" beyond a mountain (my country has this). It's not easy to discretize continuous-quantity equations into something like a cellular automaton... I'm leaning towards representing conserved quantities like water with tokens you can move, rather than per-cell state. And I don't want some huge "simulation"—I'd love to find rules that can demonstrate these processes in few enough steps to follow by hand. Hmm say I have air that wants to go up + right, and it holds just 1 water token—which way do I move it? Well I suppose I want a bit larger numbers so quantization won't matter that much... And I probably want alternating horizontal vs. vertical game phases (also dealing with 1D slice at a time can reduce previous-vs-next-state confusions). Any advice for tools to help think about rules/mechanics and what can emerge from them, beyond "try and see what what happens"? (But I guess I really should play with large "sand" style models, then try to scale down! try-and-see is more powerful than merely keeping in my head.) |
| 5 comments | |
|
|
Ivan Reese
2024-09-14 21:26 #
Reposting ;) Periodic self-reminder. The main ideas behind Hest are: 1. Nobody’s made a good computer code out of things moving through space. 2. Moving through space is also about moving through time. Rewind is table stakes. 3. If moving through space is meaningful, then space itself is part of that meaning. Position, distance, velocity — they mean something. 4. You can do things with this meaningful space-time visual code that you simply can't do in a non-moving visual code. |
| 13 comments | |
|
|
Nilesh Trivedi
2024-09-12 01:35 #
Could Huawei's triple foldable display phone combined with software like Samsung Dex liberate portable devices from being consumption-oriented devices? :thinking_face: Apple has kept a strong hold on keeping ipadOS from threatening macOS. But the Android ecosystem does not have that limitation (see Waydroid or BlissOS or PostmarketOS for example) Projecting in the future, we might even get briefcase size displays/machines that unfold into a full tabletop-style communal computing interface. |
| 3 comments | |
|
|
Jason Morris
2024-09-11 17:50 #
When I started my law firm, I thought everything I knew about a client matter needed to be in "the file". I wasted a lot of time moving things that were perfectly fine where they were. I realized that "the file" was a naive metaphor I took from law firms pre-cloud. That changed my outlook about data models. I don't want my digital model of things to mimic the real world artifacts involved, and spend a lot of time trying to explain to my colleagues that just because a person files a motion by delivering a real or digital pile of pages with real or digital ink on them doesn't mean that the document and the motion are the same thing. A motion doesn't have a page orientation, and a document isn't potentially vexatious. But when I argue that we should be modeling the domain, not only the artifacts, my colleagues — who are all also former lawyers — don't seem to disagree so much as act as though I'm speaking heavenly script. Does anyone have any tips for persuading people who haven't been converted to the wisdom of domain modeling that maybe our systems should deal with the things we care about, and not only the things we can download or touch? |
| 13 comments | |
|
|
Paul Tarvydas
2024-09-10 07:42 #
FWIW, my reaction to something mentioned in the latest FoC podcast (https://futureofcoding.org/episodes/073): Computer Science isn’t about programming. Computer Science is about mapping computational thinking into the digital domain and discovering problems in an ad-hoc manner, then fixing the problems to make the mapping work on reprogrammable electronic machines. https://programmingsimplicity.substack.com/p/computational-t… |
|
|
Christopher Shank
2024-09-02 20:05 #
What are ways we can make computation more squishy with soft-body physics? Most visual notations are overwhelmingly rigid and structured! https://m.youtube.com/watch?si=VpS2zmWQgoVUkvid&v=3OmkehAJoyo&feature=youtu.be |
| 11 comments | |
|
|
Jamie Brandon
2024-08-31 20:17 #
Does anyone have thoughts about equality vs ordering in maps/sets? I have some pondering here - https://www.scattered-thoughts.net/log/0048/#zest-ordering but the decision tree at the end is the main thing: • Order isn't observable at all. • Iteration order is either non-deterministic or expensive. • Determism can be manually recovered by storing both a map and a list of keys, but at the cost of storing two copies of each key. • Order is observable. • Order doesn't affect equality. ◦ Equality is not extensional ie a == b does not imply that f(a) == f(b). ◦ If [a: 0, b: 1] == [b: 1, a: 0] then we must have struct[a: i64, b: i64] == struct[b: i64, a: i64], but we still have to remember that the field order is different, which implies that type equality can't rely on interning and pointer comparison. • Order affects equality. ◦ Sets become surprising / less useful. ◦ If I want to add query planning, I can't promise that f(db) == optimize-query(f)(db). |
| 15 comments | |
|
|
Nilesh Trivedi
2024-08-30 01:49 #
I've been thinking about how neurosymbolic AI might be achieved. The first problem is that of memory/knowledge. Triple stores are often recommended. But I am failing to see how triples are THE definitive choice for knowledge representation. The classic example would be: How to store the fact "Bob's age is 23yrs". This maps to the Entity-Attribute-Value or Subject-Predicate-Object pattern and the triple (Bob, age, 23yrs) works. But on one hand, even a 2-store can be used: (Bob, Bob's age) This has more layers of indirections, yes. But the primitives become simpler. On the other hand, if the fact was "Bob bought this camera in Singapore for 100$", the same layers of indirections show up in triple stores as well. Arbitrary knowledge seems multidimensional (time, place, context etc etc). Is there a reason to believe that triple stores achieve the best tradeoff between simplicity and expressivity? |
| 16 comments | |
|
|
Yuriy Zymlex
2024-08-28 21:17 #
A huge number of languages are compiled into binary code. Why solutions for binary code optimization didn't become so popular as LLVM and GCC? |
| 13 comments | |
|
|
Paul Tarvydas
2024-08-28 11:56 #
(by "a bunch of these" I mean 1 for Python, 1 for JS, 1 for WASM, 1 for ???, etc.) |
| # |
Paul Tarvydas
2024-08-28 11:54 #
I’m trying to figure out why you (@Ivan Reese) think that using OhmJS to produce the wiki would create a dependency, while I (@Paul Tarvydas) don’t think so. Here’s a diagram of how I understand the situation... |
| 11 comments | |
|
|
Guyren Howe
2024-08-27 22:35 #
I just had a thought. Is anyone aware of any work on a non-programmer-friendly UI for editing pattern matching? Semantically, I’m looking for Datalog. So I guess a Datalog query UI, although I could imagine a pattern matching UI being developed outside of a use with Datalog. |
| 5 comments | |
|
|
Yuriy Zymlex
2024-08-25 06:35 #
I have a few questions/topics about which I would like to get your opinion. Since I'm interested in the underlying logic of this things, this may look banal. If the essence of every programming language is the construction of logic, have there ever been any attempts to bring that process into minimal separate entity for purpose of wider use than just programming? By purposes, I mean the creation of: • Text instructions - as you can see them in Jira, Org-Mode, Markdown (or detailed program's log) • Graphical - MindMap or here it is good to remember "data flow diagrams" from informatics, but it can be expanded to any other kind • Actually programming itself, but as building any "pseudo" code (including graphical) for convenient use with a theoretical possibility of converting "pseudo" code back to logic • ... (other variants) |
| 3 comments | |
| # |
Kartik Agaram
2024-08-18 12:34 #
Final-ish state of problem statements and reactions Also, a final-ish personal visualization of the "star map of FoC". All the caveats and disclaimers from last time continue to apply. I'll post some even more personal comments and critiques of people's responses and the whole process in comments. I hope it provokes comments and reflection from others. I'm looking forward to putting this up on the FoC wiki in some form. |
| 24 comments | |
|
|
Paul Tarvydas
2024-08-15 03:46 #
I’ve been pointed at the Kronark YouTube channel which is only a few days old and purports to show how to build software using nodes. https://www.youtube.com/watch?v=qM2mtAPEmd4 Several things jump out at me: (1) nodes do NOT need to return a value (unlike functions, which must always return something ; does the need to return something lead to bloat???) (2) undefined behaviour is allowed (does over-defining of ALL behaviour lead to bloat???) (3) encapsulation and abstraction - 0D defines Container components which encapsulate and elide layers, 0D does this encapsulation at runtime ; Kronark compiles out encapsulation at compile time (AOT). I feel uneasy about this, when taken to the extreme. Maybe 0D should be described as“structured concurrency” (???) Whereas Kronark is just more-of-the-same linear composition (???) that works in a feed-forward, single-threaded manner. It will be interesting to see examples of concurrency and feedback in Kronark. (FTR, “feedback” is not the same as “recursion”). |
| 12 comments | |
|
|
Kartik Agaram
2024-08-10 16:19 #
Following up on @Duncan Cragg's follow-up: please feel free to post problem statements and react to other people's problem statements ^^ above ^^. Also feel free to use this thread as a retrospective. We've had a few threads now where the format of comments was tightly circumscribed, and it's high time you had a place to comment on specific statements, ask for clarification, post clarification. I'm going to be offline for the next week. But I'll read everything after I get back, post my own comments and questions (I have a few but won't lead off with my own) and then create some sort of digestible summary. |
|
|
Andreas S.
2024-08-05 03:28 #
@Kartik Agaram is that your blog? http://akkartik.name/post/programming-2024 |
| 3 comments | |
| # |
Kartik Agaram
2024-08-04 11:23 #
Here's the current state of people's reactions to each other's problem statements. If you haven't added your reactions yet, please consider doing so! If you haven't written a problem statement yet, please do so before reacting to those of others. I know it's a non-trivial bit of work. I tend to open Slack on two windows somehow to jump between the problem statement thread and the problem reaction thread :face_palm::skin-tone-3: But it does seem like something promising to think about. I've also included a very rough, very preliminary, very incomplete stab at visualizing clusters of people's problem statements. There's no reason to think this "space" is Euclidean or 2D, so take it with a huge bucket of salt. The visualization is in no way mapping status relationships. The intent is not to exclude anyone, but a very narrow instrumental purpose of finding opportunities to collaborate. If you need an analogy, a better one might be a star chart. It seems safe to assume we're all light years apart given our track record of collaborating :smile: This picture is an initial attempt at making a map based on imprecise measurements from a single point. If you spend any time thinking about the map, try to build your own from the raw data to avoid my inevitable biases. I started out with Kartik at the origin (no objectivity here!) and positioned first my 1s, then my 2s, then 3s and so on all the way to 6s. Then I tried to go through others similarly and resolve tensions in a very rough, very manual way. I might do this a few times to try to get better at it. Even though this "data set" is almost certainly high-dimensional, a few 1-D relationships popped out at me: • Kartik -> Tom + Tom -> Paul = Kartik -> Paul • Kartik -> Tom + Tom -> Nilesh = Kartik -> Nilesh I responded by putting the 4 of us on a straight line. There may be a spectrum here that bridges the incomprehension between the ends. This sort of bridging of incomprehension is a common pattern. I initially had Ivan as far away from Kartik as Paul. But several connections drew the Ivan/Eli cluster closer. Dany too might be as far from me as Paul, but is just 1 away from Jimmy. Guyren too, but is close to Tom and Dany. So some of these edges have more "tension" than others, and I haven't come up with a way yet to show that. (I'm currently showing edges labeled 1-3. If we get more data I might need to prune that further. The edges are directional but unfortunately my tool doesn't have arrows.) Anyways. Add your problem statements and reactions! |
| 7 comments | |
|
|
Jari
2024-08-03 08:32 #
Hello, I am currently building a lowcode platform for easy and fast backend development. Basically, you write logic using functions which look like excel functions or UDFs. Do you have any opinions on programming using Excel? I have written prototypes many times using it, but main problems have been 1) not being able to use it as a backend 2) more complex sheets are hard to understand and test |
| 6 comments | |
| # |
Kartik Agaram
2024-08-02 21:42 #
Follow-up to yesterday's prompt on problem statements: post a single comment with a number from 1 to 6 for every comment but yours in yesterday's thread, indicating how close you perceive everyone else's problem statement to be relative to yours. (And don't read other people's comments before you post yours; that's part of the fun here.) Here's what the numeric scale means: • 1: This is a rewording of my problem statement. • 2: This overlaps almost entirely with my problem statement. • 3: I care about this problem. • 4: This doesn't seem like a big problem. • 5: This is fine, I don't think it is a problem. • 6: This statement is alien to me, I don't understand it as a problem statement. Hopefully that makes sense and I haven't missed some major option.. In a day or two I'll collate the results in the attached table. (You're welcome to do so as well; just download the html file and open it in a browser tab, fill in and hit the 'save' button to save a local copy with your edits. Upload it here if you like, that can be an alternative way to give your votes.) |
| 17 comments | |
|
|
Paul Tarvydas
2024-08-02 15:06 #
Falsifiable theory… Theory: Function-based thinking greatly restricts thinking about FoC. Test: if this theory is true, then examination of the source code for The Mother Of All Demos will reveal that not all parts of the demo system were tightly inter-connected into a single synchronous, functional blob of design. How?: Where can we find the source code for TMOAD? If we obtain the source, how can we reverse-engineer the design out from the implementation details? If we can get at the design, we should look for how the sub-units of software are interconnected. We need to examine if the code is designed as many islands of synchrony vs. being designed as just one big blob of synchrony. Corollary: if TMOAD was designed as many islands of software and hardware, then it is unlikely that anything as interesting as TMOAD can come of building software on computers using only synchronous languages, like Python, Haskell, using concepts such as thread libraries, theorem-provers, etc. [Thread libraries are but assembler-level work-arounds that enable the use of the function-based programming paradigm with languages like Python, Haskell, etc. Theorem provers need single islands of synchronous code, to work] |
| 26 comments | |
|
|
Kartik Agaram
2024-08-01 14:27 #
Prompt for everyone here: to the extent that you think about the Future of Coding or have projects to try to improve things, what problem are you trying to attack? Can you state it in a couple of sentences? Without reference to a solution? Try to be precise about the audience. For example, some problems affect everyone, while others affect only professional programmers, or only researchers who use computers in their work. My hypothesis is that focusing on problems will help us all find our most promising collaborators in this group. (The next step will be to combat our tendency to be defined by our tools, to let our tools erect barriers that divide and balkanize us. But that's further down the road. For now, let's just "find our homies," the people we share specific dissatisfactions with.) There are ideas for problem statements in a couple of earlier threads: • 1718448593.662299.html • 1717926129.937119.html • ../present-company/1721870703.344739.html But this thread is not for critiquing or analyzing any of those statements. Just add your own, and nothing else. (It's totally fine to copy statements from these threads. Many of them were arrived at after tons of consideration so it would be surprising if others didn't care about them. Also feel free to synthesize from multiple statements. Just try to get to something crisp and opinionated.) |
| 23 comments | |
|
|
Paul Tarvydas
2024-07-31 14:30 #
@Konrad Hinsen, I just watched Orion Reed’s talk https://www.youtube.com/watch?v=csGNVaB83Rk, pointed out by @Christopher Shank. The talk continuously fired the same neurons in my head as does the phrase “malleable computing”. I’m not in that head-space, but, I continue to wonder if there’s a connection … (YMMV) |
| 5 comments | |
|
|
Dominik Jančík
2024-07-27 13:14 #
Thought the format may better fit here |
| # |
Nilesh Trivedi
2024-07-26 19:50 #
Prof Eric Hehner's theory of bunches (think of the comma in x,y,z as a binary operator on bunches) seems very foundational and delightfully elegant. Once you see it, you can't see but think that the way we have handled collections of various kinds (sets, strings, tuples) is ad-hoc and not systematic. What if we had notation that supported all these structures? :thinking_face: |
| 9 comments | |
|
|
Adam Davidson
2024-07-19 09:35 #
Just a random thought that has been rattling around in my head while listening through podcast episodes and Ivan’s visual programing points. I am new here so apologies If all this has been said before, or covered in podcasts I haven’t gotten to yet. I want to propose a slightly different framing for what it means to say that a representation of a program is visual / spatial or not I think that textual programming is visual. It’s a series of symbols laid out on a screen in rows, and the spatial/visual relationship between the tokens does actually correspond to aspects of the operation of the program. For example an assignment statement has the thing being assigned to on the left, and the value on the right, parentheses group things together spatially on the screen, statements that appear above others within a block (usually) execute before the ones below (goto considered harmful breaks that down which I think you talked about). And good code formatting is mostly about making these visual analogies stronger. Zig plays with this by allowing you to release memory the line below where you have allocated it, which breaks down the time - up down analogy since the deallocation actually happens after the lines that follow, in favor of being able to spatially group two very semantically related statements in the program. That shows that there’s a lot to be played with within the context of textual programming if you think about in terms of spatial analogies to your program. To explore this more though, it’s interesting to think about how a program could be represented completely non-spatially or non-visually, and how these two things might differ. You could imagine being read the textual code for some program aloud, without seeing the text at all, that would be a non-spatial, and non-visual representation of the program You could also imagine seeing a single visual element, like a black circle on a screen or something, blinking on and off in morse code to transmit the code to you. To me that would be a visual representation that is not spatial, since the spatial dimensions of that single visual element don’t matter at all to the information being transmitted. It could be an array of dots or an image of some crazy person’s pure data patch or anything at all blinking on and off and the program being transmitted would be the same. So what would a representation of a program look like that is minimally spatial? Maybe you could imagine two dots on the screen that encode a two bit piece of a textual program encoded in unicode, one two bit portion at a time? They flash on with the first two bits for a second, then the second two bits for a second blah blah blah (so practical!) Is this spatial? There is a lot to explore here actually I think. Technically the particular spatial relationships of the pixels on the screen does need to be considered in order to decipher the program in the two dots scenario, and that is qualitatively different from the one dot scenario, where no information is gained from examining any spatial relationships. But I am skeptical of whether or not this is actually minimally spatial. It seems like we should define a spatial representation of a program to mean that some meaningful part of the program is represented spatially, and I don’t think “a two bit portion of a unicode character making up a textual program” meets that criteria. But Is this “meaningful vs non meaningful part of a program representation” a distinction that can even be clearly drawn? It seems obvious that there is at least a real quantitative difference if not a qualitative difference there. If the difference is only quantitative, then this two bit program would have to be a minimally (if highly unsatisfying) spatial representation of a program, but maybe there is some way to formally filter out non meaningful parts of a a program’s representation that are only essential to the representation of the program and not to the program itself? But like was pointed out in the No Silver Bullets episode, there are a huge number of different ways to visualize the same program. I think that we are stuck in a single way of visualizing our programs - which is the code, and to me the problem is not that code is bad, but that we are missing out on a huge number of different ways we could visualize and “reason about” (lol) our programs, so I’m not disagreeing with the actual takeaway, it’s more a critique of the hard division between textual and visual programming. |
| 36 comments | |
|
|
Paul Tarvydas
2024-07-17 13:08 #
Thinking about Schematics vs. Code. [This began as a short reply to @Stefan Lesser regarding my take on electronics schematics in another thread.] https://open.substack.com/pub/programmingsimplicity/p/2024-0… |
| 10 comments | |
|
|
Guyren Howe
2024-07-15 14:17 #
I have a blog about matters related to the topics here. Just dropped this, which discusses why more of typical business logic should be implemented in the database: https://frest.substack.com/p/state-farming |
|
|
Jason Morris
2024-07-15 12:54 #
After reading a linkedin post by a friend of mine, today, in which he describes "protective randomness" as a virtue of human systems, the absence of which makes certain AI applications frightening, (https://www.linkedin.com/posts/colarusso_protective-randomne…) I have come to the conclusion that this may be the best argument I have heard to object to the determinism in Rules as Code: that the systems we have for dealing with the output of the interpretation of statute not only anticipate but depend on variability of interpretation for their effective operation, and that they operate to do more than merely resolve disputes over legal interpretation, so the absence of those disputes is not an unmitigated benefit. Take for instance the conversation that happens between law makers and judges. A law is drafted, there are disputes over how to interpret it, in part fueled by examples of differing interpretations from administrative decision makers. Those differences in interpretation can help people know on what grounds they might object to a particular decision. Those objections go to judges, and judges might differ again, which has the same effect. And the differing interpretations of the judges in the context of things worth arguing about brings to legislators' attention places where the rule itself is both problematic from a fairness and/or interpretation standpoint, and where that problem causes significant issues in the real world, equipping them with information about where to focus when considering amendments. All of those benefits accrue even if no decision is ever made to resolve the dispute. If you replace variable administrative decision makers with a deterministic system based on a best shared interpretation, that review system, which not only accounts for but depends on variable outputs to function, stops working as effectively. That is not to say that what you lose is not worth what you gain. But it is a coherent argument about what is lost, and how, from consistent automated application of laws, and it is prescriptive about where and how rules as code should best be applied to avoid those losses. Which now makes me wonder whether armed with this idea, I would have a more generous read of the Laurence Driver paper. For context, the linked post is aimed more at attempting to understand some forms of anxiety around AI applications, and particularly in the context of copyright violation, which Colarusso considers complaining about the wrong thing. But the idea metastasized in my head, and now I might have to give Driver the benefit of the doubt. |
|
|
Shen Li
2024-07-05 07:45 #
Related to my last post, where I believe we shouldn’t make decisions outside the context of a problem or goal. I’ve observed the same issue with secondary goals, where they are discussed outside the context of primary goals. I don’t know if this bothers other people, but it bothers me a lot. Maybe I’m not smart enough to see the implied connections. One example I can give is that many times I’ve been given the goal of “consistency,” whether in the UI or the code style. I’m not saying “consistency” is a bad thing, but without connecting it to the primary pre-shared goal, the value of this secondary goal becomes trivial and nullified. Logically, it doesn’t make sense either, especially for a start-up, because a start-up is doing something new, and you can’t do new things by pursuing consistency. If we did things consistently, we’d still be using XML instead of JSON. Again, to be clear, I’m not saying doing things consistently is bad. I’m just saying that, for me, when given the goal of “consistency” without the context of why it’s important for our primary goal, I’d be much more motivated. Another example is “patterns.” I think initially “patterns” are just solutions to some pre-existing problems, but we put too much emphasis on them to the point where we forget about the goals of these patterns, and the patterns themselves become the goal. To be clear, I’m not saying patterns are bad or that we shouldn’t use them. We should know them, in the same way we should know other just-in-case knowledge, to perform better. Some patterns are just cool, and we derive joy from them, the same way we get joy from movies and music. I’m just saying we probably shouldn’t treat them as primary goals (unless in school, I guess, where you get points for implementing a pattern). Now that I think about it, this may just be a communication issue within an organization, where secondary goals are communicated without the connection to primary goals. I’ve never worked in a big organization, and I wonder how they do it. Also, am I alone in this? Do other people feel demoralized too when given just a secondary goal? |
| 11 comments | |
|
|
Paul Tarvydas
2024-07-05 07:36 #
pond’ring aloud: I wonder if the problem with VPLs is the word “language”. It appears to me that the word “programming” has been generally accepted to mean “sequential language” or writing sequential codes (aka “coding”). I view this view as being too restrictive. Programming is more than just commanding a machine with sequentialistic instructions. Programming a CPU, though, is - by definition - sequentialistic. But,,, programming a machine(s) need not be sequentialistic. Especially in the age of nothing-is-central. In fact, LLMs are an example of non-sequentialism. The machines that run LLMs were programmed, arduously, in sequential notation, but, the inner success of LLMs is not sequential, but something else (massively parallel plinko?). VPLs and DPLs are, to me, not sequentialistic things. Maybe they should be called “notations” instead of “languages”? VNP and DNP? Visual Notation for Programming, Diagrammatic Notation for Programming? [In which case, “programming languages” as we know them, are TNPs - Textual Notations for Programming]. In fact, programming is not the difficult part. Re-programming is the novel aspect of Design that computers bring to the world. We have been programming machines to do single things for centuries (using metal lathes, etc.). This time through, though, we have built machines capable of doing many things. |
| 18 comments | |
|
|
Paul Tarvydas
2024-07-05 07:34 #
pond’ring aloud: The value of Gutenberg’s printing press is that it taught kids to read, not to build printing presses. The value of computers is that they teach kids to ???, not to write code. |
|
|
Eric Normand
2024-07-04 12:56 #
I'm in pursuit of the next part of my career. I don't know what it will look like, but I want it to be productive. |
| 5 comments | |
|
|
Eric Normand
2024-07-04 12:50 #
I have a question I hope someone here can answer. I am at something of a crossroads in my career and privileged enough to be able to pursue almost anything. When I tell people the big problems I'd like to make an impact on, it's education, specifically science education. I want more people to understand how the scientific method works and how we use it to gain more understanding. I have passively read about education (Montessori, Bruner, Piaget, Pappert), followed Alan Kay and the smalltalk story, and I was a math teacher for a couple of years. I also teach currently online. I can't help but think that there is more to using computers than reproducing old media, and that the code-debug cycle is a good way to refine our understanding. And so maybe there is something there, using programming and interactivity as a medium for exploration of ideas. However, I don't have much more of a vision than that. I was talking to my wife about it yesterday and came up with an interesting phrasing: I want to do what Montessori did with her learning materials but with computers as a medium. I would appreciate any and all links to people, conferences, reading material, etc., that are related to this idea. Just to be clear, I don't mean teaching kids to code. And I don't mean using software to support the current educational paradigm (e.g., Chromebooks in schools, etc.). People seem to automatically roll back to those two pits. |
| 15 comments | |
|
|
Shen Li
2024-07-04 08:22 #
I find a lot of statements these days describes a fact about something and then call it the “best”. It’s like someone saying “look number 2 is so great, it’s the only even prime number, it’s so cool that it’s used as the base of digital systems, so we should use 2" And someone else says: “well, number 3 is cool because it’s the first Mersenne prime, and it has a super cool divisibility rule, so we should use 3”. At the end of the day, if the question is 1+1, then 2 is infinitly better than 3, and the other way around if the question is 4-1. And if you just need some positive integer as a placehold or something, then well, they are the same. People seems to like and re-post these information a lot. I think these facts do provide some values, like the whole entertainment industry, it fulfills the curiosity of our minds and keeps us, well, entertained. But drawing the conclusion that something is better, or something should be used instead of another thing based on these facts just feels off to me. It’s especially bad IMO, when people use these statements in PR reviews. |
| 4 comments | |
| # |
Declan
2024-07-03 13:59 #
I recall coming across some opinions Against interactivity. I think in support of showing the thing, rather than making the user interact to see the thing. Is there a soundbite for this? Are there any good links? I don't know where I encountered this opinion I think a few times, but I found something in one passage searching Bret Victors Explorable Explanations. I wonder is this the most concrete link or reference I'll get, or does it ring a bell for someone else? |
| 7 comments | |
|
|
GuzhIRegem
2024-06-30 12:19 #
Hey, someone knows about any research into RAG-Based training of models? |
|
|
Alex McLean
2024-06-29 01:24 #
Who'd be interested in an event with talks and some performances around making notations and programming languages for pattern-making (textile, musical, choreographic etc)? Half focussed online, half focussed in-person, all streamed. Mix of open call and invited talks. All free/open access. Probably in January. Maybe called "Programming Of The Art Computer". |
| 4 comments | |
|
|
Ivan Reese
2024-06-23 17:44 #
I'm becoming interested in the idea of "programming tools as art", and as a consequence I'm interested in programming tools criticism. I'd like to read/watch/hear critical reviews of programming tools that approach them not as bundles of features and capabilities, but as authored works that reflect a creative intent and as cultural touchstones and as environments or artifacts within which one can have deeply personal experiences. A. Do you share my interest? B. Do you know any such critics? |
| 21 comments | |
|
|
Oleksandr Kryvonos
2024-06-23 07:22 #
Builders manifesto (aka* Software builders manifesto) Build as much as you can, experiment as much as you can, build something you are passionate about. |
| 2 comments | |
|
|
Oleksandr Kryvonos
2024-06-16 14:13 #
I want to program as cheap as possible but still with relative comfort and with portability in mind. |
| 4 comments | |
|
|
Don Abrams
2024-06-15 21:20 #
we keep telling computers how to work instead of what they should do |
| 11 comments | |
|
|
Kartik Agaram
2024-06-15 03:49 #
Some possible goals for the future of software After some recent discussions, I spent some time searching the archives of this community for the word 'manifesto', then skimming the manifestos I found in search of their goals, phrased as problems they saw in the world. Then I clustered them by these problems. Here's what I ended up with, possible problems we have seen in the past: • Programming computers requires a lot of knowledge and effort. ◦ https://github.com/dkrasner/Simpletalk/blob/master/ComputingManifesto.pdf ◦ https://github.com/stefanlesser/recurse/blob/master/manifesto2017.md (creating data visualizations) • Adapting software to ourselves is hard; few people do it. ◦ https://www.researchgate.net/publication/220427813_Meta-Desi… ◦ https://malleable.systems • Software is trapped in silos (apps) and can't be recomposed. ◦ https://malleable.systems ◦ https://object.network/vw-llll.html • Software is inefficient and unstable because it's built atop a Jenga-like tower of dependencies. ◦ https://handmade.network/manifesto ◦ https://vladh.net/manifesto ◦ https://guidoism.github.io/escape/day_two_manifesto • Programmers encourage the world to be profligate with the attention of others. ◦ https://github.com/stefanlesser/recurse/blob/master/manifesto2017.md • Software has a deep influence on populations without corresponding accountability. ◦ https://criticalengineering.org • Programmers build software atop platforms optimized for consumption rather than creation. ◦ https://www.inkandswitch.com • Programmers can't build a sustainable living without behaving in anti-social ways hostile to their customers. ◦ https://altocode.nl/blog/manifesto ◦ https://github.com/stefanlesser/recurse/blob/master/manifesto2017.md • Programming requires simulating the computer in your head. ◦ https://shalabh.com/programmable-systems/wheres-my-simulator.html • UIs are poor. ◦ https://github.com/Slackadays/Clipboard/wiki/User-Experience-Manifesto (discoverability) ◦ https://github.com/stefanlesser/recurse/blob/master/manifesto2017.md (touch-screen controls) • It is possible to break a computer's software in such a way that it requires outside intervention (e.g. a rescue disk) to fix. ◦ https://guidoism.github.io/escape/day_two_manifesto • Computers can't model the world. ◦ https://www.dcs.warwick.ac.uk/~hugh/TTM/DTATRM.pdf If the problem you're chasing doesn't quite fit in any of these buckets, please share it in a similar format. (One sentence, not describing a solution.) If it does fit one or more of these buckets, please mention them. (Alternative wordings are also appreciated, but for me the primary goal here is to cluster ourselves.) |
| 30 comments | |
|
|
ender
2024-06-14 14:15 #
Also: how does Photoshop work? For example, how would one make a free, open-source Photoshop clone? am particularly thinking of the Smart Object functionality, which is the reason I use Photoshop in particular none of the Photoshop clones have this feature, except for Photopea, which is very slow on my computer and not open source |
|
|
ender
2024-06-14 14:01 #
I am currently thinking about working on one or more of these ideas: • visual pl for creating your own compiler • visual pl for spreadsheet creation and customization • visual pl for making domain specific languages I will probably converge on a visual programming language with a spreadsheet GUI that compiles to WebAssembly. Any resources for intuition about compilers, spreadsheets, or DSLs that help me understand these topics would much appreciate. (think: x explained visually, explorable explanations) |
|
|
Oleksandr Kryvonos
2024-06-10 00:00 #
A spreadsheet with the FoC projects |
| 3 comments | |
|
|
Oleksandr Kryvonos
2024-06-09 02:42 #
I am sorry to interrupt, and this may sound like a question with an obvious answer, but what are the goals we are trying to achieve? What are the problems we are trying to *solve*? |
| 93 comments | |
|
|
Peter Saxton
2024-05-29 12:05 #
What conference would people recommend, preferably ones still to happen this year, which are a good place to discuss FoC topics |
| 3 comments | |
|
|
Jason Morris
2024-05-27 11:03 #
In something like prolog, terms can be nested. So I can express the idea "Socrates believes that he is mortal" with bel ieves(socrates, mortal(socrates)). Are there any popular database types that make it easy to have relations of arbitrary arity as parameters of other relations, without unduly adding to the complexity of the schema? Preferably with ungrounded statements and open-world negation? Is there some obvious reason why not? Is there a computational complexity problem that arises in the real world? RDF allows triples to be referenced, I believe, but you are limited to arity 2, which seems needlessly limiting. Labeled graphs have arbitrary arity for non-entities, but entities are limited to two, and you usually can't refer to an edge. It seems... weird to me. Is it just that we don't really have the efficient reasoners over those kinds of expressions, so it hasn't been useful? |
| 36 comments | |
|
|
Oleksandr Kryvonos
2024-05-24 05:23 #
Does anyone know if there is somewhere a new implementation of something similar to GRAIL system from Rand corporation ? https://www.youtube.com/watch?v=2Cq8S3jzJiQ |
| 6 comments | |
|
|
Stefan Lesser
2024-05-20 09:05 #
This is one of those questions where I don’t really know yet how to ask it, so let me fumble and handwave a little bit and see where this goes: In computing history we went from printers to screens, and on those screens from a brief stint with vector graphics to bitmap displays, and on those bitmap displays from text mode to frame buffer, and in those frame buffers from sprites and blitting to rasterization and compositing. In the early days, when there wasn’t enough RAM for a full-screen bitmap frame buffer, character glyphs and sprites were brought in from ROM. Now we have so much memory that we have double-/triple-buffering and realtime compositing of separately stored textures that often exceed the number of screen pixels available by an order of magnitude or more. I’m particularly interested in the early transition to raster graphics. At some point (and I assume that was probably with PostScript?) it became feasible to compute graphics on the fly instead of having them prepared as bitmaps in ROM or on disk. If I remember this correctly, PostScript was invented because due to the different font sizes it was more economical to ship instructions to generate glyphs on the fly on the printer than to ship all possible glyphs as bitmaps in all the different font sizes. In a way we went from a “final” representation of a map of bits restricted to a certain grid size to an “intermediate” representation of instructions that have to be executed to generate the final map of bits in the desired size. Alternatively, we could see that as swapping space (memory) for time (compute). Are you aware of any papers or other material that compares both sides of this transition? For instance in terms of performance in space and time, ie. how much compute is needed for how much memory saved. Or in the broader sense of how we settled on certain graphics primitives, because they were cheap enough to implement in terms of compute, and how we settled on certain data formats, because they were small enough in terms of memory usage, so that this trade-off made sense. |
| 5 comments | |
|
|
Daniel Sosebee
2024-05-17 13:42 #
Loose set of thoughts: 1. could you make a type system that somehow captures all information possible about every value in a codebase? Like where the following is true: if typeof(a) === number, then typeof(a + 1 + 2) === number+3 !== typeof(a) … 2. I might want to “pin” and “unpin” my types - e.g. before refactoring a function, to “pin” its return type. If I had a more powerful type system like described in part one, I wouldn’t want to have to write out the whole type, I would want to just say “pin this such that whatever changes I make could not possibly effect the outcome of the function for any input, or else give me errors describing exactly what part of the input space no longer maps logically the same to the output space” 3. Another way to think of this might be to say, rather than writing tests, to be able to say “assume infinite test coverage of this codebase (and all tests are passing), now let me refactor things”. 4. I have no idea how this would work, but it makes me think of getting fractions into “simplest form”. Maybe you could get two functions into “simplest form” to test their similarity? I wonder if anything like that exists, or if this is gesturing at some existing area of research? |
| 8 comments | |
|
|
Mariano Guerra
2024-05-17 04:33 #
An interesting video: The 100 Games That Taught Me Game Design I would like to see "The 100 Applications That Taught Me Application Design". Which ones are yours? |
| 1 comments | |
|
|
Konrad Hinsen
2024-05-16 01:09 #
In this tweet , Simon Wardley compares making software systems explainable via moldable development (my expansion of his reference to Glamorous Toolkit) to creating maps. That sounds like a very useful metaphor to me. Many of us are interested in or even working on visual coding tools, and I wonder what their take on this metaphor is. Maps are inherently visual, but they are not the territory, i.e. the code with all the details. To me, visual tools are obviously the right choice for creating maps, but I remain unconvinced about their appropriateness for code. I am thinking in particular of @Orion Reed’s recent demo of infinite canvasses as user interfaces. For making multi-faceted maps to software systems, that looks like a very appopriate representation. |
| 8 comments | |
|
|
Andreas S.
2024-05-08 07:57 #
Hello Future of Coding! I'm looking for something which I would describe in the following way. There was a few years ago a article on hackernews where someone showed a kind of dynamic state transition visualization. One could setup multiple nodes and avalue flow from one node to the next but there would be also a flow back to the original node. So my question would be does anyone know what I refer to? What was the name of the diagram. I tried to search for dynamic state transition diagram but it is very scary how bad search engines are these days. So the Name of the diagram , the hackernews article or related reousces would be most welcome. Thank you :slightly_smiling_face: |
| 15 comments | |
|
|
JP Posma
2024-05-07 22:12 #
The best Bret Victor talk you've never seen: https://www.youtube.com/watch?v=eJm44LJDU44 |
| 2 comments | |
|
|
Paul Tarvydas
2024-05-06 20:09 #
Thinking about banning the use of IF-THEN-ELSE... https://guitarvydas.github.io/2024/05/02/Banning-the-Use-of-IF-THEN-ELSE.html |
| 4 comments | |
|
|
Jason Morris
2024-05-03 14:52 #
I am once again looking at pages of notes I wrote three years ago attempting to find a way to declaratively diagram concurrent legal processes so as to illuminate the steps available to the parties as the process unfolds. I feel like I have something worth exploring, but to illustrate it I need a diagramming language that allows me to nest nodes inside of one another, and draw edges that originate and terminate at arbitrary depths of nodes. DOT won't let you draw an arrow starting at the edge of a subgraph, and doesn't have any way of nesting actual nodes, for example. Is anyone aware of a text-based graphing language that will let me nest objects and draw edges between arbitrary depths? |
| 6 comments | |
|
|
Assaf
2024-05-02 15:54 #
I'm exploring strategies to enable scientists (biologists in pharma) without computational expertise be able to interact with big data more intuitively. My ultimate goal is to have users ask biological questions, and the system to generate and execute analytical workflows utilizing existing methods from the scientific domain to answer these questions with data visualizations, I evaluated the non-interpretable and inaccurate "chat your data" LLM solutions. I'm currently thinking about the possibilities of developing/using a DSL as intermediary output prior to code generation to make the process more interpretable. I am also considering what would be the most efficient abstraction strategies of the analytical functionalities/libraries in certain biological domains to improve the accuracy of the outputs (of the higher level strategy and the actual code). I would love to brainstorm about these problems offline/online. Here's my intro post for a bit more context about me. |
|
|
Konrad Hinsen
2024-04-30 08:19 #
Trying to name a concept: The cognitive surface of software https://science-in-the-digital-era.khinsen.net/#The%20cognit… Has something similar already been discussed, or at least introduced? |
| 22 comments | |
|
|
Paul Tarvydas
2024-04-29 02:35 #
preliminary musings on bloatware https://guitarvydas.github.io/2024/04/27/Bloatware.html |
| 5 comments | |
|
|
Dennis Hansen
2024-04-27 13:34 #
Random thought/question. I've noticed canvas based design tools have converged on a panel configuration of "Layers | Canvas | Properties | (and sometimes Timeline)"-- as opposed solving the underlying needs another way. Is this pattern the end-all-be-all? Or a local maxima? I tend to think the later. |
| 27 comments | |
|
|
Ivan Chebykin
2024-04-26 13:43 #
Hi everyone, I'm currently trying to think of ways to improve OpenAPI developer experience, can someone check out the design doc for a simplified OpenAPI generator: https://chebykin.org/posts/openapic |
|
|
Greg Bylenok
2024-04-25 09:28 #
Does anyone else think of "configuring" as distinct from "programming"? Some activities I consider "configuring" and not "programming": much devops work such as Terraform, YML files for build pipelines, even commonly labeled "programming" of a VCR/DVR. |
| 18 comments | |
|
|
John Austin
2024-04-23 23:50 #
Ok, I've been thinking a lot about composable systems recently, and why I don't find visual programming languages like blueprints very flexible. Wrote up a blog post about it. Basically, I think the value graph is a more fundamental primitive for computation than execution graphs. https://johnaustin.io/articles/2024/composability-designing-… |
| 20 comments | |
|
|
Dany
2024-04-14 05:34 #
I wrote a blog post about constant data in PL. Which is kind of curious in text based PL and a place where more visual approaches can really shine. https://medium.com/@bitteldany/where-does-constant-data-go-b650338b2ee9 |
| 24 comments | |
|
|
Andreas S.
2024-04-13 02:07 #
Hi FoC Community :slightly_smiling_face: I'm looking for something that i found a couple of years ago and apparently my fuzzy descriptions fail my zettelkasten or a search engine for that matter. I think I'm looking for a clojure talk in which someone presented also a tool. This tool used a UI of 2 or Three circles as a kind of number REPL which explained for example how the map function works in clojure. I hope that isn'T too vague if you know the name of the tool, that would be very cool. Thank you!! |
| 20 comments | |
|
|
hamish todd
2024-04-08 03:57 #
I'm thinking about spreadsheets. Has anyone ever made a convincing interface for defining functions, using a spreadsheet interface? (I am aware that you can define functions in most modern spreadsheets, but this requires you to go to a traditional coding interface. This is obviously cheating!) |
| 6 comments | |
|
|
Paul Tarvydas
2024-04-05 20:15 #
Silicon Valley vs. non-compete clauses. https://guitarvydas.github.io/2024/04/05/The-Origins-of-Silicon-Valley.html |
| 1 comments | |
|
|
William Taysom
2024-03-30 03:10 #
My sister asked whether her middle-school son should pick the choice of a block programming language (like Scratch), JavaScript, or C# for a class he's in. I claimed that he'll learn the same fundamentals with blocks minus the frustration, tedium, tea ceremony, and incantations associated with the others. To prove that the block program has the real creativity and that moving to the others is practically automatable, I took may favorite Scratch program https://scratch.mit.edu/projects/605658/ and had Chat translate it into JavaScript and C# https://chat.openai.com/share/02215935-c0b8-4fc9-9bf9-94f0b3fab613. The results seemed promising. Chat even made helpful observations: > Translating the same Scratch program to C# requires a different approach because C# is often used in desktop applications, and there's no direct equivalent of the Canvas API like in web technologies. However, you can use Windows Forms or WPF (Windows Presentation Foundation) for graphical applications in C#. Here, I'll provide an example using Windows Forms to create a simple drawing application that mimics the Scratch program's behavior. If you check my conversation, you'll see I start asking what a "partial class" is having never heard the term. Chat parroted: > Using partial classes in this way provides flexibility. You can start with all your code in one file for simplicity. Then, if the class grows or you decide to use the designer, you can easily refactor the designer-generated code into its own file without changing the class's functionality. This approach keeps your custom code separate from the auto-generated code, making it easier to read and maintain. I explained that every language, every tool has many such conventions. You learn the ones reverent to whatever you're doing right now, but learning them all is impossible. Instead the real skill is knowing that you don't know and being able to find out quickly. We're lucky that a these things are obscure, come up often, and are discussed on the Web. Thus LLMs are especially good at helping with dumb programming problems. So why use the established languages besides Chat knowing them well? I thought of three reasons: • Expressivity — Blocks will get a beginner pretty far, but you'll find the others have constructs that helpful for saying things that would be very hard with blocks. You won't appreciate scratch until you feel the itch. • Causal Powers — The block system will let you do things in class you'll learn core ideas, but the blocks themselves won't work everywhere. JavaScript, on the other hand, works all over on the web, and C# has its own ecosystem. Often there's bridging, but also one or other language will be the most natural one for certain kinds of work. • Scale — With big and medium sized programs being done with text, editors for wrangling it, and version control for keeping track of it exist. They can we weirdly powerful and janky. But you're liable to start having a hard time keeping track of blocks when it takes a dozen or more screens to fit them all. |
| 3 comments | |
|
|
Justin Janes
2024-03-28 19:18 #
Does anyone have any solid papers on interactions with operating systems using primarily hand gestures from cameras and projectors? I know this is very dynamicland but i’m kinda tired of waiting for a system i can let the kids play with on the carpet. |
| 2 comments | |
|
|
Paul Tarvydas
2024-03-25 19:27 #
At about 54:20+, Crockford ends up saying that types cause bugs. What are examples of those kinds of bugs? https://www.youtube.com/watch?v=XFTOG895C7c |
| 17 comments | |
|
|
Jamie Brandon
2024-03-24 14:30 #
Pondering some FoC-adjacent ideas, with the goal of finding a financially sustainable project that can fund more tentative adjacent work - https://www.scattered-thoughts.net/writing/miscellaneous-ideas / https://www.scattered-thoughts.net/writing/how-to-trade-soft…. Less FoC-related, I mentioned in the bottom of that post that I'd love to help someone pick up the streaming system testing work that I started in https://www.scattered-thoughts.net/writing/internal-consiste…. It will be a real slog getting momentum, but there's potential to really raise the (incredibly low) bar for reliability and understand-ability in that niche. |
|
|
Duncan Cragg
2024-03-24 03:36 #
Hi folks, I've been fiddling around with the projects spreadsheet here: https://docs.google.com/spreadsheets/d/12sTu7RT-s_QlAupY1v-3… and I thought I'd take this opportunity to ask you all to ensure your entries are complete and up-to-date. New users welcome: just add your project! Note: your project should ideally be at least primarily open source. |
| 42 comments | |
|
|
Jacob Zimmerman
2024-03-20 10:26 #
I want to build the backend of an as-bidirectional-as-possible spreadsheet/dataflow, does anyone have any favorite techniques? I’d like to prefer a dataflow style solution over a constraint solver. I’ve been reading up on why this problem feels hard and its similarity to the “view update problem” in databases, I’m curious if there’s a widely accepted solution that I’m missing. |
| 11 comments | |
|
|
Fredrik
2024-03-18 13:16 #
Is there any wisdom on how to best lay out code in a visual code browser? In my experience, code can be layed out either more horizontally on long lines or more vertically on short lines. This is controlled by setting a criterion for how many levels of nesting there can be before a node switches to a multiline layout. Long lines use space efficiently but tend to get hard to read. Short lines are easier to read, as tokens of similar significance line up in columns, but tend to take up much vertical space while leaving most of the horizontal space unused, as the average line is just one key and one value. Shall I accept that code gets very vertical, and use the free horizontal space to add multilevel navigation panels, or is there a third option that is more horizontal while still easy to read? I can go really fancy and add tables and multiple columns, since I have full control over the layout function, but not all code is regular enough to fit a tabular format, and I cannot require the person editing the code to manually bikeshed it by editing whitespace or dragging around visual nodes. I've seen the horrors of manually bikeshedded plain-text languages and the horrors of node-based languages where the programmer makes a simple one node change and then has to drag all the nodes around so they line up. Are there any examples of interesting solutions to look at? Here's how I mean a more horizontal layout: > element 1 { key 1: value 1, key 2: value 2, key 3: surprise { key 1: value 1 } } > element 2 { key 1: value 1 } Here's how I mean a more vertical layout: > element 1 { > key 1: value 1, > key 2: value 2, > key 3: surprise { > key 1: value 1, > }, > } > element 2 { > key 1: value 1, > } In the more horizontal layout, I can barely parse the surprise structure at a glance, and I can barely see if I've made a mistake in editing. It takes a lot less screen space though. |
| 18 comments | |
|
|
Kongwei Ying
2024-03-15 05:17 #
Basically, this approach is powerful because instead of 1D strings of text, now you can have the power of rich text in your code. Including diagrams, and even embedding other programs through <iframes> would be possible. And when your code needs to be compiled, all these rich text snippets are simply removed. |
|
|
Kongwei Ying
2024-03-15 05:15 #
Another concept I've been ideating about is how to bring Literate Programming, by Donald Knuth, into my daily work, which involves modern tools and stacks like VSCode and Node.js. I believe inline, rich text snippets which are integrated with some kind of personal knowledge management system is the way to go. This way, instead of having comments like this: // TODO: Refactor this to use the revised approach It instead would look like using Notion or Obsidian inside VSCode. So above a function, would be a small window into a single page that describes a single function. You can do anything here, like linking references that are relevant to the design of the function. Or you could even have a lengthy design document that explains why a function was written a certain way. Going even further, you could have a page which describes the evolution of a function over time, why at the beginning it was written a certain way, why changes had to be made, and why it looks the way it looks right now. And added bonus of this approach is that now it's possible to have a single source of truth for docs and your code. So rather than maintaining a separate Docusaurus that has to be updated to sync it with evolution in code, you can just maintain documentation in line. And then to publish developer docs online, you merely just take all the little snippets above each function and then aggregate them onto a single page. |
| 3 comments | |
|
|
Stephen De Gabrielle
2024-03-13 04:40 #
Does a parametric IDE exist? I’m not sure if this makes sense, but I’m thinking similar to Parametric CAD tools(&sketchpad), but for code? Maybe making use of type annotations, contracts, interfaces, etc. at edit-time (instead waiting for compile-time or run-time). |
| 15 comments | |
|
|
Jim Meyer
2024-03-09 02:29 #
Software products are physical products. That's why they're hard to design and engineer! The physicality of software is kept at arms-length in a vector-based design tool. Here, the strength and focus is on surface level aesthetics and exploration though mocks — many, many mocks. All needed. All useful. But a mock does not a product make. A mock is an incomplete story of software physics. Which brings us the other side of the spectrum... The IDEs — the code editors. The product you ship is here, so "I guess someone has to go there". First challenge: To most people it's walls of inexplicable symbols and weird (even hostile?) punctuation. Then, with code, you're essentially play-acting as a computer. You have to "speak computer" fluently to feel at home here. It's a love/hate relationship of running programs in your head. Mostly failing to do so. Then learning to get better at debugging. Eureka moments of finally solving the puzzle that unlocks a bugfix! Endlessly restarting programs to reset state. Today, even after multiple decades of investment in IDEs, coding is still 100 times harder and less fun than it should be! How can we truly move the needle? A traditional IDE deals with the how to fully describe the physics of a software system. Writing and editing algorithms. Managing data flows. Figuring out logic. Painting pixels. Sending data at the speed of light over the network. But the IDE doesn't actually let you see the program as it manifests to the user in the final medium. It's running somewhere else — the browser, on your phone. This is where vector-tools have the IDEs at least partially beat. Yes, they're just mocks, but the vector-tool tool sees the mocks alongside you. This changes your relationship with the tool. Thinking and touching — moving, dragging, scaling, rotating, duplicating — seamlessly blends on a canvas, and it just feels _good, even fun!_ IDEs and editing code as text offers none of those things with today's tools, and it just feels like... friction! So the letter to Santa reads as follows: Dear Santa, give me the best parts of a vector-based design tool, plus the best parts of an IDE, rolled into one — but with none of the downsides. Thanks! Christmas can't get here fast enough. |
| 19 comments | |
|
|
Lu Wilson
2024-03-08 01:09 #
follow up to some recent academia & writing style discussion. I've been trying to formalise some of the writing styles i personally use Two beat style https://www.todepond.com/wikiblogarden/academia/style/two-beat/ |
| 1 comments | |
| # |
Paul Tarvydas
2024-03-07 12:14 #
Is Alan Kay's diagram at 1:05.11 a veiled challenge? Replace 1972 by 2024. What do we see 30 year in the future? A laptop or tablet with 100,000 CPUs? Fosbury Flop? Breaking the Four Minute Mile? |
|
|
Mariano Guerra
2024-03-07 05:57 #
Do you know any games where the core game mechanic is about programming? Things like Zachtronics games, factorio or https://robotopia-x.github.io/ |
| 26 comments | |
|
|
Alex Cruise
2024-03-05 08:14 #
Re "beyond efficiency" podcast episode... I remember reading many years ago about this idea, maybe in Scientific American... Basically, evolved systems tend to be inefficient and full of redundancy, whereas designed systems are efficient and parsimonious... But many evolved systems can still function when many components are damaged |
| 4 comments | |
|
|
Lu Wilson
2024-03-03 00:04 #
I wrote down my perceptions of academia as someone on the outside. https://www.todepond.com/wikiblogarden/academia/from/the-outside/ |
| 82 comments | |
|
|
hamish todd
2024-02-28 03:47 #
But maybe someone here has already tried this? |
|
|
hamish todd
2024-02-28 03:46 #
Problem: my setup is already cluttered. Eg, animated characters are already surrounded by a halo of crazy clockwork; it's all I can do to hide it. But sometimes you want to see a lot of it. And I don't want to add boxes-and-arrows, and I don't want to add spreadsheets much either. I'm thinking that instead of showing the relations, I just let you fiddle with the things and see what happens |
| 2 comments | |
|
|
hamish todd
2024-02-28 03:43 #
You animate by making a bunch of these things, and then "snapping" them together, so they are joined end-to-end for example, and that becomes constantly-updated behaviour. Problem that I'd appreciate input on an idea for is how to visualize the "code" |
| 1 comments | |
| # |
hamish todd
2024-02-28 03:39 #
Hey folks. I've been working on a VR ui for animation, inspired by Stop Drawing Dead Fish and a system called Projective Geometric Algebra. In this gif you can see me making something called a PGA Rotor, which is TLDR is an object that generalizes vectors and quaternions. |
|
|
Francisco Garau
2024-02-24 03:23 #
Nice presentation of the Glamorous Toolkit in the latest Vamos 2024 Conference in Bern. https://vamosconf.net/ https://vamos2024.inf.unibe.ch/ https://www.youtube.com/watch?v=KsAq25yT-CU |
| # |
Lu Wilson
2024-02-22 08:25 #
I mapped out a huge list of prior art for visualised LINES of memory in coding environments. I've annotated the LINEs in each example. Please check it out and let me know if it prompts any ideas/thoughts! And if you know anything I could add, please send em over! https://www.todepond.com/wikiblogarden/see-it/prior-art/ |
| 31 comments | |
|
|
Safta Catalin Mihai
2024-02-22 07:03 #
Does anyone know of a: 1. open source, 2. visual programming, 3. streaming ( as in recative streams), 4. statically typed project for visually building a data streaming graph and running it ? I think this should be quite natural to do since looking at the code for Akka GraphDSL - it’s already pretty close to a visual language. |
| 5 comments | |
|
|
Mariano Guerra
2024-02-22 03:36 #
Why are you doing your FoC project? https://www.youtube.com/watch?v=BpJYqC4PWEw |
| 2 comments | |
|
|
Mariano Guerra
2024-02-21 01:48 #
Anyone here uses/used https://www.red-lang.org/ ? Could you share your thoughts on it? |
| 7 comments | |
|
|
Justin Janes
2024-02-15 20:54 #
I’m not sure which channel this belongs in or the usernames of the podcast but i’ve been working through the podcasts backlog. I wanted to share that Flash isn’t entirely dead and it’s based on a usable and sandboxed Wasm. https://vidkidz.github.io/ |
| 11 comments | |
|
|
Guyren Howe
2024-02-15 00:12 #
Trying to see what I can do with the relational model, only supporting multi-model. Tagging each row of tables with a “model” identifier, much as temporal databases attach an interval or whatever to a row. This would be give us a First Order Modal logic. I could have some fund pondering what various modal logics can do here (I’ve studied Modal Logic, but not recently). It occurred to me to ask about existing work in the area. At least what the concept is called, so I can go look for prior art. Think of having a Datalog database and being able to set a “current model” or being able to do separate parts of queries in different models. I’m also interested in the idea of merging multiple models to build new ones. What should I look for? Thanks. |
| 3 comments | |
|
|
Guyren Howe
2024-02-11 00:07 #
Is there an attempt at making a more beginner-friendly, perhaps graphical, form of prolog. Perhaps something like Squeak, but where the computation model is more logic programming than imperative, structured programming? Or perhaps some other friendly presentation of logic programming? |
| 7 comments | |
|
|
Jim Meyer
2024-02-10 23:19 #
New visual programming languages don't fail as visual programming languages. They fail as programming languages, which is what most new programming languages do. |
| 19 comments | |
|
|
Eli Mellen
2024-01-28 06:06 #
I wanted to bounce 2 terms I've been thinking of off of this group: I dig visual programming, but think the term is like a little bit of a brain poison because it isn't really descriptive of the goals, and, like, almost all textual programming is inherently visual, too...just...in the way text is. I think @Ivan Reese was the person I first heard float the term "spatial programming," which I dig, but at least for me, it also misses the real value add of what I'm looking for in a "visual" system. So, the two terms I've been kicking around: • relational programming • cartographic programming Neither are perfect, and both feel exhaustingly pretentious (a good thing, may haps?) but my intention with both terms is to highlight that these sorts of systems, unlike text-based programming, help make the relationships between different elements (classes, data flow, inheritance, etc.) meaningful using information other than similar names. Useful? Stupid? Prior art? |
| 9 comments | |
|
|
Jacob Zimmerman
2024-01-25 18:08 #
Just curious for all your thoughts, is being ahead of your time a good thing? I’m thinking of a conversation I had with @Toby Schachman in the Cuttle discord a while back where he mentioned that Cuttle aimed certain details at a status-quo of programming style unlike it’s predecessor Apparatus, I thought that was quite profound. I’m thinking also of Fortran vs Lisp (or perhaps Forth). When is it not worth it to meet people where they are? |
| 8 comments | |
|
|
Mariano Guerra
2024-01-25 02:31 #
Why aren't you using one of these? What's missing in them? is your use case not covered? • https://gtoolkit.com/ is the Moldable Development environment. It empowers you to make systems explainable through experiences tailored for each problem. • https://www.unison-lang.org/ A new approach to Distributed programming • https://github.com/hyperfiddle/electric A reactive DSL for full-stack web development, with compiler-managed frontend/backend network sync • https://redplanetlabs.com/ a new programming platform that reduces the cost of building scalable backends by 100x • https://croquet.io/ Multiplayer Platform for Web and Unity • https://enso.org/ Nodes and wires data manipulation • https://www.rvbbit.com/ reactive data boards & flows • https://www.wolfram.com/language/ a symbolic language, deliberately designed with the breadth and unity needed to develop powerful programs quickly. |
| 28 comments | |
|
|
Salmen Hichri
2024-01-12 02:30 #
I wrote an article discussing The Future of User Interfaces .. and the role of Conversational AI: https://www.linkedin.com/pulse/future-conversational-craftin… I'm curious to know what the community thinks! :brain::bulb: • Do you foresee a world where chatbots and voice are the dominant user interfaces? • Or will the mouse/screen always maintain a leading role in human/machine interactions? |
| 14 comments | |
|
|
Ivan Lugo
2024-01-06 08:05 #
Heya internetpeoples :heart: I’ve spent a long time refining this and brought in “The LLMs” to help craft the tone here, and I think I’ve finally gotten it to a point where I feel like it hits my message and question, and doesn’t assume too much negativity or… doomcalling, heh. Thanks for the time and shared space, as always. --- I’ve despaired when stuck on problems I just couldn’t crack. I’ve also felt the joy of those “aha!” moments when things finally click. We’ve all been there as coders. While documentation and searches can help fill gaps, little replaces another human sitting alongside, guiding with patience earned from experience. In those moments when someone more seasoned gave guidance, I felt hope renewed. How might we foster more of these vital human connections? Key Discussion Points: - Knowledge flows when passion meets patience. I’m grateful for the patient coders who “reached down” to guide me. Let’s discuss barriers hampering these relationships. Generalizations about certain groups being “unwilling” to help are counterproductive. However, empathetic mentorship remains scarce. How might we change incentives? - Truly supporting newcomers requires understanding their frustrations are valid. I want to open a thoughtful discussion on constructive ways we can keep improving in this regard. - There are always exceptions by those dedicated to lifting others up. But much room remains for improving access, channels and incentives for more direct peer sharing across experience levels. It’s on each of us to reflect on where we can have an impact. I welcome reactions, shared experiences, and dialogue toward that aim. How might we strengthen coder communities through human connections? Where do you see the biggest opportunities? Together, I believe we can guide positive change. |
| 6 comments | |
|
|
Steve Krouse
2024-01-04 05:26 #
Hey friends! I don't know if you're familiar with this harvard linguist on tiktok but he's the best: https://www.tiktok.com/@etymologynerd?lang=en I think it would be AWESOME if someone from "our community" would make those style of tiktoks, but about computer and programming history. I think it would become quite popular and be super enriching and educational I have some amount of capacity to help and sponsor this, but I mostly wanted to put it out there as a general request for someone in our community to take up the gauntlet in this new medium |
| 3 comments | |
|
|
Ivan Reese
2024-01-01 13:17 #
Someone reached out to ask me for more thoughts about communicating programming ideas through media other than the academic paper. I wrote a reply, and then decided it would be worth sharing here to see if other folks have their own inspirations they'd like to share, or ideas for how our industry can go paper-free ;) --- I feel like I owe reading an apology. I certainly try to play up my "crank" side on the podcast, but it does run the risk of mixing-up this is being silly with this is thoughtful critique. I have tremendous reverence for the communicative potential of the written word. I just think there are some kinds of ideas that lend themselves better to other forms of expression, or some ideas that can't be written down. For instance, it's very strange to me whenever I read a paper about HCI, especially if they're discussing GUI ideas. Sure, often these papers will be accompanied by a video. But, like, the work being described is about interacting with interfaces. I think the work should be presented as an interface you can interact with! I'm especially fond of Bret's essays, naturally. Bartosz also does great work with visualization, though I feel like he leans a little too heavily on text and that the visualizations are too linear. Amit also does excellent work, but he has the advantage that most of the things he demos are inherently about interactive graphics so they lend themselves naturally to this sort of presentation (not to diminish the incredible effort Amit puts in to these articles). The thing I want to see more of is… people finding ideas that can only be expressed through interaction. I think successfully achieving this requires that someone work natively in interaction, a lot, for a long time. As a result, most of these ideas seem to emerge in the periphery of video games. One of my favourite examples is Dys4ia, a collection of microgames about the trans experience. It uses written language and (meaningfully crude) visual art to set up the plot, but interaction to tell the story. Something I'm very interested in seeing (and have made a few attempts at myself, but nothing worth sharing) is an attempt to create a fully-usable programming environment presented as a game specifically for the purpose of communicating ideas about programming. There've been plenty of the inverse, where a programming system is the setting within which a game takes place (see all the works of Zachtronics, for instance), but I haven't seen anyone do a game as the setting within which actual programming takes place. Closest to that might be something like Minecraft or Dreams (etc), but I don't think those were designed to communicate ideas about programming the way, say, The Witness was designed to communicate a philosophy of science. Another close comparison might be Advent of Code, where you playfully approach programming differently than in your normal work. The programming you do for AoC should feel meaningfully different. Similarly, imagine building your own Rosetta Code from scratch. That should give you a really particular feeling. I think it's related to, say, the feeling of writing a rasterizer for the dozenth time. I think these feelings are ideas, and that there's a whole language of them, and that the language is expressed through the creation of systems. I think if we studied this language, it would guide us toward building different kinds of tools. And hell, you might eventually be able to write a paper about that. (Countdown to someone arguing that this is what Christopher Alexander has made a career of, in a sense.) But I don't think we will arrive at those system-feeling ideas in any way other than by building and playing with systems, and with a particular intention at that. |
| 14 comments | |
|
|
Stefan Lesser
2023-12-30 05:04 #
Can we make this a top-level discussion please? ../share-your-work/1.703859.html… I’m not so much interested in what the “correct” way of distinguishing those three is, more in how people distinguish them, in their idiosyncratic ways. So what do you think makes programming different from software engineering different from computer science? |
| 75 comments | |
|
|
Kartik Agaram
2023-12-19 12:04 #
A large codebase is a realm ruled by the iron fist of legalism. In addition, it is a patchwork of many different jurisdictions, each with their own overlapping but subtly different laws. And it's incredibly easy to spawn a new jurisdiction! |
| 9 comments | |
|
|
Ivan Reese
2023-12-16 12:09 #
In linguistics, we have "denotation" and "connotation" as two forms of meaning. In programming, we have denotational semantics and operational semantics. Do we have connotational semantics? (If not — may we?) |
| 29 comments | |
| # |
Prabhanshu Gupta
2023-12-14 02:04 #
I'm making a system for working with loosely structured tables in spreadsheets. Tables/lists in sheets represent collections of things, however formulas and drag-filling works at an item-level (cell-level) abstraction. This causes a lot of problems – duplicated effort, hard to do lookups across tables, errors when new data is added. However, committing to a structure upfront (a SQL style table for example) has a big cost. An effective system would allow users to gradually introduce structure that works with whatever rich table they draw. Right now I'm onto a language for pulling data from such rich tables. It works by manipulation of the ranges (rectangles) pointed to by Labels. Queries can be made by intersecting/unioning rectangles (in picture is a small example). What ideas/projects would you recommend looking at in this space? I've looked around a fair bit for "2D grammar" and "spatial programming language" but haven't had much luck. |
| 5 comments | |
|
|
Paul Tarvydas
2023-12-08 01:59 #
I believe that VPLs are better than TPLs. I include some observations that led me to that conclusion. meta: I choose to believe that this channel “thinking together” means that half-baked ideas are to be tossed out for brainstorming, pushback, discussion and revision. https://guitarvydas.github.io/2023/12/04/Code-Layout-for-Programming.html (discussion of 1D, 2D, 3D, 4D program syntax) |
| 28 comments | |
| # |
Nilesh Trivedi
2023-11-29 04:23 #
Thinking about a modern agent orchestration / business process modeling / workflow language. Here is how the standard BPMN example might look like: # Tasks are enqueued jobs to specific queues. They emit events like started, success, failure, cancelled as well as custom intermediate events. |
| 13 comments | |
|
|
Guyren Howe
2023-11-28 19:02 #
But have y’all seen this? https://scrapscript.org/ This is my kind of thinking. |
| 18 comments | |
|
|
Mariano Guerra
2023-11-27 02:57 #
Where's the emacs people in this text centric brave new world? Context: the most interesting stuff done on text always happened on emacs, and it makes sense to use a text centric malleable software platform to experiment by adding LLMs to everything, I haven't seen much done there. |
| 6 comments | |
|
|
Janne Aukia
2023-11-24 06:43 #
I think that often the most difficult part of programming is debugging: humans aren't very good at "seeing" how an app operated when it failed. You get some log output that might or might not have references to the correct file locations. I don't see any reason, in the long term, why humans would be better than machines at debugging. How to make that happen? I assume somebody is building this already. Would it help if an AI with a large context window + access to the VM could see the whole call logs/tree and see exactly what is going on? AI could learn from other users, see everything that happens in a run without debugger/console.logs, try multiple solutions in parallel, and fix issues while you sleep. Thoughts on this? |
| 16 comments | |
|
|
Scott
2023-11-19 10:28 #
An idea is starting to form for me around prototype-based modeling being a good metaphor for programming effectively with LLMs. Essentially you can provide an example of a patttern/component/class/etc and have it return a version of it modified in specific ways, which can then be used as a prototype for future generations/instantiations. A version of this idea can be seen here with tldraw: https://twitter.com/mrmkrs/status/1725959207365583196 where he generates the next more specific interface step off the previous one. Another I'm kind of using this in my agent framework: https://github.com/sublayerapp/sublayer/blob/main/lib/sublay… where we generate new agents based off a simple agent template (and works surprisingly well). I know Hofstatder digs into this concept in GEB and Steve Yegge calls it the Universal Design Pattern Does this resonate with anyone here? Is anyone familiar with any other writing about prototype-based modeling/prototypal inheritance/etc for me to take this further? |
| 13 comments | |
|
|
Tom Lieber
2023-11-19 06:58 #
I built a Magic Inky interface at work a while back. A metadata editor that presented as a nested bulleted list of English sentences with clickable words, like: “From [time T1] to [time T2], an [event type] happens with [property P], and it’s very [adjective].” The event descriptions are highly multi-dimensional and resonate well with this information design, though the timestamps suffer a bit. They want to be on a timeline, but I didn’t have the budget. Despite this, the UI has saved us loads of time and people love the sentence-based configuration compared to the forty-column table of dropdowns they envisioned when I started the project. The biggest failure was that enforcing a few global constraints was also outside my budget. Lacking those has led to data loss—never more than a few minute’s worth, but still. I felt bad. Thankfully, someone else recently picked up the project and will be correcting those omissions. But we disagreed immediately on how to do it! I thought we should present the errors: “These events overlap!” The other person thought we should make the errors impossible: when you edit a timestamp, you implicitly edit all the others that are involved in the constraint. I generally agree with their approach. I mean, it’s baked into the rest of the UI. When you change an event type, it changes the rest of the sentence. But if you change the type back, the sentence structure is restored and your previous values all come back. Cascading edits are more destructive than that. They force you to be careful about what you change and to be observant of unintended side-effects. The block editor problem of representing invalid states is another way to look at it. Sometimes the most efficient path between two valid states passes through an invalid one. If you want to reorder two events, for example, a first step might be to copy the start and end times from one to the other, as part of an “a = b; b = oldA” sequence. They overlap until you’re done. To do the same without ever breaking global constraints requires user ingenuity or a more featureful editor with a “swap events” button. Requiring user ingenuity wastes a lot of time and energy and happiness over the lifetime of the UI, but observing users and adding features to address every desired editing operation takes a lot of dev time too, and it has to happen now, or else people editing this data will be blocked whenever they find an impossible edit. Anyway, not too many answers here, but I thought it was an interesting case study, with thought-provoking questions at least! |
| 2 comments | |
|
|
Tom Lieber
2023-11-18 08:30 #
@Kartik Agaram It wasn’t on-topic in the thread you started a while back, my but first thought when considering building software like that is “Writing a social media app is frightening” (or more generally, “Storing user data is frightening”), as this post just reminded me: https://notes.billmill.org/link_blog/2023/11/Life-critical_side_projects.html |
|
|
Gregor
2023-11-13 09:28 #
Is there a good catalogue of programming languages? Preferably with the option of searching by feature or comparing languages on some dimensions? |
| 9 comments | |
|
|
Xavier Lambein
2023-11-11 02:20 #
I'm thinking about ways to represent/interact with a (computational) graph. I could come up with three different interfaces off the top of my head: 1) names/identifiers and application, 2) combinators/stack operations, and 3) boxes and wires. I'm curious to know if y'all can think of any other? |
| 18 comments | |
|
|
Dane Filipczak
2023-11-10 15:54 #
What are some examples of successful UIs over constraint solving systems? I'm about to do a bit of research on this topic but thought I'd start here. Off the dome I can think of excel (numerical constraints) and rhino grasshopper (architectural / physical constraints). I realize this is vague, but what I have in mind is a UI that allows for constraints to be defined which are then composed together and solved behind the scenes. In particular, I'm wondering how to represent the case where there are multiple valid solutions and offer cycling through them to the user. |
| 13 comments | |
|
|
Arcade Wise
2023-11-08 17:31 #
Does anyone know of any systems that let you take the output value on a repl, edit it, and then edit the code so that your edit is true? |
| 16 comments | |
|
|
Mike Austin
2023-11-02 12:37 #
Over the years, I've thought about different ways of creating an interactive tutorial about writing a simple programming language. For example, you can create a "wizard" style with next and back buttons, or you can create one single page with the code floating on the right side of the content (possibly sticky). One detail is that each example would grow in size (for the complete code), but would only focus on one sub-section. I thought about collapsing sections already covered, but being able to expand them, or just have a single button to expand all the hidden code. Has anyone had experience or have seen articles that use a "build from small to large", showing code along the way? |
| 10 comments | |
|
|
John Flockton
2023-11-02 10:27 #
Hey folks! I'm doing some research into code formatters/pretty printers, with a view to potentially building my own. Does any one have any examples of code formatters that they've found especially fast, or that they know of which have a special focus on performance? I'm interested in learning about some of the potential techniques at play - what sort of caching and parallelization is being done, are they doing incremental parsing like tree-sitter etc.. |
| 8 comments | |
|
|
Arcade Wise
2023-10-30 07:55 #
I've been working on learning UI design, what do y'all think of this? https://www.figma.com/proto/rOhbNvD6U1MEkM3zeznLeJ/music-thi… |
| 17 comments | |
|
|
Qqwy / Marten
2023-10-28 09:39 #
And in not totally unrelated fashion, there’s PureData (FOSS) / Cycling76' Max (paid), which are reasonably successful graph-based programming languages for digital music synthesizers. I expect that in that particular case graph-based programming is so successful because it is a direct translation of how (analog) modular synthesizers used to be patched together, flattening the learning curve for musicians. |
|
|
Qqwy / Marten
2023-10-28 09:29 #
What do people here think about the REBL (read-eval-browse-loop) and the ‘Data Rabbit’ project which evolved from it? Both are tools originating in Clojure, but where the REBL is about mixing writing/running Clojure with having a graphical interface to drill down into the output data (e.g. a natural ‘visual programming’ evolution of a REPL), I’d describe Data Rabbit as the opposite: A data inspection/‘dashboard creation’ tool where you can do most tasks visually, only dropping down to Clojure if you want to do really custom things (or create new types of ‘blocks’/interactions). https://www.youtube.com/watch?v=wE-vOSY-ULc |
| 2 comments | |
|
|
Gregor
2023-10-28 07:57 #
I’m looking to learn more about a space, that I’m not sure exists. Does this word comob trigger associations to existing projects: spreadsheet, schema, hierarchy? |
| 3 comments | |
|
|
Arcade Wise
2023-10-26 13:52 #
Have y’all heard about the PLATO computer system? |
| 5 comments | |
|
|
Jimmy Miller
2023-10-26 12:47 #
Forking @Marcelle Rusu’s thread onto this bit > If so, how does "future of coding" even matter if any form of real adoption feels impossible. (Making a new thread about this because the other one has become about OO instead of this bit) I feel this deeply. It can often feel as if things don't get adopted. That programming doesn't change for the better. I have so many thoughts on this, it is hard to summarize. First, I do think we can get others to adopt the things we value. It is almost never an education issue, imo and instead a value question. (I am intentionally leaving aside the OO frame here). Think about the impact that Rich Hickey has had on how many people code, not just clojure people, but in the industry broadly. How did he do it? Through Simple Made Easy, a talk largely about values, not techniques. The same is true of Bret Victor's influence on the future of coding community. He communicated values that others adopted. I've found this to be true in practice as well. Trying to convince people to change their coding style requires diligence, communicating values, and showing how code improves because of these values. Conflict often happens when people implicitly hold very different values. I'm going to bet that is the case in the original example given. But I also want to step back and ask, what kind of adoption, by who, by how many people? I'm willing to bet a lot of people in this slack listen to some genre of music that isn't completely mainstream. Have those genres failed because of the lack of becoming mainstream? Would they be better if they became mainstream? |
| 11 comments | |
|
|
Marcelle Rusu
2023-10-25 08:02 #
In the past year or 2, I got interested in OO and I find even its basic form within a mainstream language very powerful. Yet, when I try to advocate for using polymorphism in almost any context, I get "this is too unfamiliar"/"that's not how we do things in framework X" instead advocating for switch statements or similar. And it really gets me thinking, if we don't even understand OO after 30 years of mainstream adoption (in some form or another) and are still doing "structured programming" with lambdas & objects, is generic code just hopeless in practice? Is there an education problem? Is it just indicative of how poor standards are that few people have the privilege to do any amount of design for their systems before developing? If so, how does "future of coding" even matter if any form of real adoption feels impossible. |
| 25 comments | |
| # |
Lukas Süss
2023-10-25 02:06 #
Here's the big omega combinator as annotated lambda diagram. Plus showing how the (here non-terminating) evaluation could be fluently animated. :drooling_face: ( John Tromps unannoteed version here: https://tromp.github.io/cl/diagrams.html ) |
|
|
FreeMasen
2023-10-24 17:48 #
One of the things I am curious about is how a11y relates to the future of coding. So far it doesn't seem to come up in the discussions on the podcast but I think there is something to be said about the advancement in a11y in computing over the last 25 years and a large part of this is due to a movement away from some of the more creative interface designs (ala Magic Ink). Is there a future of code that is more accessible to people with different abilities? |
| 25 comments | |
|
|
Matthew Linkous
2023-10-24 12:11 #
Maybe more of a general coding question but how do you y’all feel about database/stores that add fields to your documents that insert? E.g. you insert { name: 'Titanic', director: 'James Cameron' } into movies and when you fetch it you get back {_id: 1234, _col: 'movies', name: 'Titanic', director: 'James Cameron' } Does that bug you? Don’t care? Are there any ways to get around this so there aren’t won’t ever have collections between user defined fields and internal metadata? |
| 4 comments | |
|
|
Kartik Agaram
2023-10-23 21:29 #
Replacing authentication with visual identity Background: I'm starting to think about building a new forum. Given my past, it won't surprise anyone that I mean to do this outside the morass of non-convivial software that is the modern web browser. My broad plan is: • LÖVE v12 will support https, and release candidates are already quite stable. Good enough to start building on. • I'll build my forum out of a server-side API in Lua and a client in LÖVE v12. (Should be easy to support Windows, Linux, BSD and Android. Mac and iOS will require some annual contortions to build LÖVE for oneself.) • The server side will of course be open source just like the client. In addition, all post/comment data will be published to a git repo on something like a daily basis. The one major open question concerns authentication. How can we have stable identity? The above architecture is intended to allow anyone to host the forum (without trying to build galaxy-brain merkle trees, federated protocols or CRDTs), and I would prefer to not take a position of power as the source of everyone's hashed passwords (an intrinsically centralizing architecture). A few months ago someone showed me this ancient essay called "attacked from within", and I find myself thinking about it often. The whole thing is worth reading, but for this thread the crucial list of bullets halfway down is: • Registration keeps out good posters. • Registration lets in bad posters. • Registration attracts trolls. • Anonymity counters vanity. A provocative worldview that seems at least worth exploring. Keeping this in mind, I have a hazy idea that looks like this: • When you run the client you get to choose your handle, but it's not unique (cf. Zooko's Triangle) • When you run the client for the first time, it creates an RSA keypair for you. • When composing messages, the client signs the message with your private key (description on Wikipedia) • When rendering messages, the client validates the signature against your public key and shows something like an identicon of the public key. Implications of this setup: • No registration • Your "password" (private key) never leaves your device(s). • When reading a thread you see a handle like spiralganglion. However, the handle is not authoritative. Next to it is an identicon that is authoritative. • It's easy in a thread to see if there are ever two people with the same handle but different identicons. • Since the client platform is starting from scratch, accessibility and internationalization will be a challenge for a long time :confused: No guarantees this is all doable. It's quite possible the cryptographic operations will be untenably slow when implemented in Lua, and a native library for them would complicate the simple install story that is LÖVE's greatest strength. But I'm curious to get people's thoughts on this idea in principle. |
| 38 comments | |
|
|
Konrad Hinsen
2023-10-22 00:58 #
Ancient tech, but also the only one ever designed for this kind of use case without compromises. All of today's Open Source clones of Mathematica notebooks started with the constraint of building on pre-existing technology that was designed for different use cases. Perhaps even worse, they suffered from a rush to widespread adoption before battle-testing the design. I have often said in conferences that Jupyter will be tomorrow's legacy format that everyone will wish would go away. Fortunately nobody carries rotten tomatoes to such events, so I only get verbal abuse. |
| 8 comments | |
| # |
Tom Lieber
2023-10-21 15:11 #
I know it's ancient tech, but there are so few parts of my computer where I can freely mix styled text, code, and data, and Mathematica is the only one where doing so feels remotely natural. I was inspired to post something by recent workflow breakthroughs in how I keep my lab notebook, where I slice-and-dice tabular data from experiment results in-between my paragraphs of stream-of-consciousness analysis. It's a lovely way to work. My journal entries build on one another in ways they never did before, because I can use code to put the best view(s) of the data right into the notebook. |
|
|
Lukas Süss
2023-10-19 09:39 #
Concatenative Programming Projection 2022 – *Interleaved 2D Notation for Concatenative Programming* – by @Michael Homer Some quickly enlightening demo videos here: https://michael.homer.nz/Publications/LIVE2022/article/ <<< THIS IS GOOD Landing page: https://michael.homer.nz/Publications/PAINT2022 Tryable in the browser: https://homepages.ecs.vuw.ac.nz/~mwh/demos/p22-2d-concat/ Direct link to the paper: https://mwh.nz/pdf/paint2022 It's a concatenative language. It's not a stack based language. Slight differences I guess. Also questionably point free with with the values unnamed but live values still shown. Comparison to stack based languages ★ Similarities to a stack based language: – also no variable names – also the typical operations: dup, swap, dig – also only variables with an arity of one or more (aka functions) are shown (and literals) ★ Differences: – There's no reverse polish notation. – Unlike in in a stack based language there's no single stack. Rather the representation make opportunities for parallel evaluation quite obvious. – Variables have no names but are still displaying their live value like in a spreadsheet (not referring to the layout). :warning: It seems this is actually not a language but a projections style. This is nice, meaning to some degree other language can potentially be projected into this representation. Well, plus-minus some issues. Syntactic sugar mostly not carrying over. Readability in other projections. Switching to a different projection one may want to give out human readable variable names though rather than assigning auto-generated ones. Maybe this would be a viable additional projection target for some other languages (unison)? No clue though how this would interact with algebraic effects. Comparison to ALDs ( http://apm.bplaced.net/w/index.php?title=Annotated_lambda_diagram ) Relation of Michael Homers model to annotated lambda diagrams: ★ ALDs give same obviousness of parallelity opportunities ★ Unclear which representation is visually denser but likely not the ALDs ★ ALDs (as in the current mockups) are not pointfree. Variable names do appear both … – at the head of the function definition (and tops of let- and in- blocks) and – as annotations of the horizontal value lines (i.e. as the arguments to functions) ★ For Making the ALD code projection more aligned with Michael Homers model: – replace value names with live values – collapse let-in-blocks by substitution (live values could still be added as "syngraphic" sugar in extended value lines, I digress …) ★ flip & dig (argument permutators) – They both vanish in the ALD code projection no matter their location. – They are just permuting the arguments by swapping application lines and all preceding dependents. ★ dup – only vanishes at the top level as it turns into two forks. – otherwise less trivial as it induces an unavoidable let-in block. (Uncurrying into tuples is a bad alternative as it hides away ALD circuitry, the whole point of ALDs) |
| 4 comments | |
|
|
Mike Austin
2023-10-19 09:35 #
Thoughts on AI code assistants? https://www.elegantthemes.com/blog/wordpress/best-ai-coding-assistan It doesn't seem that far off from easily prototyping things like games. An AI could understand what a screen is, a sprite/character, movement, etc. Heck, just tell it to generate a random game and fine tune it. |
| 6 comments | |
|
|
Lukas Süss
2023-10-16 05:41 #
On an other note: – – – Here's an interesting new paper on advanced structural editing with a strong "typing normally" focus: Gradual Structure Editing with Obligations https://tylr.fun/vlhcc23.pdf building on https://tylr.fun/ by @David Moon @andrew blinn @Cyrus Omar – – – And some work on seemingly lower level perhaps more near term practically applicable projectional editing: Projectional Editors for JSON-Based DSLs https://arxiv.org/abs/2307.11260 https://prong-editor.netlify.app/ by @Andrew McNutt @Ravi Chugh |
|
|
Lukas Süss
2023-10-16 04:48 #
Hey everyone, – I'm looking for some quite a few years old demo that I can vaguely remember that was using pointfree code in a table layout (related to stack based programming). Some cells merged and changing on evaluation IIRC. I initially thought that it was from @Jonathan Edwards, but not so sure anymore. I was not particularly convinced about the idea but some discussion about stack based programming came up where this would be a nice reference I guess. Does anyone here still have a link to that maybe? |
| 5 comments | |
|
|
Paul Tarvydas
2023-10-15 03:50 #
FYI - David B. McClain wrote Forth for a living (Kitt Peak) and is now using Lisp. I posted some of his comments here, including a reference to his Forth in Lisp: https://guitarvydas.github.io/2023/10/06/David-McClain-on-FORTH.html |
|
|
Paul Tarvydas
2023-10-15 03:49 #
observation: similarities - Forth, de Bruijn Indexing, Lambda Calculus, Currying ... |
|
|
Josh Cho
2023-10-14 20:07 #
better DSLs for prompt engineering? i am being inspired by forth |
|
|
Duncan Cragg
2023-10-14 15:00 #
"code that you would be interested in reading while sitting by a fire with a snifter of brandy" - Christ, that's when I start discussing UFOs and conspiracy theories. |
|
|
brett g porter
2023-10-13 07:42 #
I can only interpret it in the sense that Jon Bentley discussed in Programming Pearls: code that you would be interested in reading while sitting by a fire with a snifter of brandy. After that, my next step is Knuth's Literate Programming, well-structured narrative text describing a program's operations and the thought process behind it (that happens to have pieces of compilable code embedded within). |
|
|
Eli Mellen
2023-10-13 07:31 #
What does it mean to you when someone says something like “code as literature?” Often the implication seems to be that code should be readable — which I take to mean “understandable,” which I further take to me “as a person looking at this code I can map what it’s output will be.” Where my specific hangup enters is that a lot of literature isn’t directly “understandable” in this sense. There are many layers at which to understand literature. How about code? Code as more than it’s outcomes. |
| 10 comments | |
|
|
Jason Morris
2023-10-12 09:12 #
I just (finally) figured out how to represent my coding language as a directed multi-graph with labeled edges. Now I'm wondering if the interpretation steps could be represented as graph translations, so you could literally "watch" it execute. Anyone have any ideas for libraries that I could use to explore that idea, or examples I could look to? My current best guess is NetworkX and visdcc+dash. |
| 5 comments | |
|
|
Alex McLean
2023-10-09 13:19 #
@Kartik Agaram's draft programmer's pledge reminded me of Ursula Franklin's checklist for technology projects, which is a bit hidden in one of her really excellent 1986 lectures on the "real world of technology" > “… whether it: > (1) promotes justice; > (2) restores reciprocity; > (3) confers divisible or indivisible benefits; > (4) favours people over machines; > (5) whether its strategy maximizes gain or minimizes disaster; > (6) whether conservation is favoured over waste; and > (7), whether the reversible is favoured over the irreversible?” I tried to summarise these points in a blog post here or you can listen to the lectures directly, or read it in book form. I'll pull out a couple of quotes, first on 3) divisible/indivisible benefits: > “If you have a garden and your friends help you to grow a tremendous tomato crop, you can share it out among those who helped. What you have obtained is a divisible benefit and the right to distribute it. Whoever didn’t help you, may not get anything. On the other hand, if you work hard to fight pollution and you and your friends succeed in changing the practices of the battery-recycling plant down the street, those who helped you get the benefits, but those who didn’t get them too. What you and your friends have obtained are indivisible benefits.” and on 7) reversible vs irreversible: > “The last item is obviously important. Considering that most projects do not work out as planned, it would be helpful if they proceeded in a way that allowed revision and learning, that is, in small reversible steps.” 5) on maximising gain vs minimising disaster is also a really interesting point, where she argues against planning, and for finding the right conditions for something to grow, at its own rate. |
| 3 comments | |
|
|
Janne Aukia
2023-10-09 02:55 #
Has anyone thought about or written about malleable software + LLM:s? I feel that it is an area that could be quite interesting, but I haven't got yet a clear understanding on what this will lead to. I think that pretty soon most of end-user code will be generated with the help of LLM:s. Some thoughts/questions I've been thinking about: 1. How to generate programming languages, libraries and abstractions that LLM:s can use well? Is that different from generating libraries etc for humans? a. LLM:s are faster than humans in processing data, so API:s can be really wide and probably more complex than what would be practical for devs. b. LLM:s can probably handle more condensed/optimized representation better, too. c. And be able to infer system affordances directly from code. 2. How to support creating good and maintainable code from LLM:s? And will that matter? Or will actual code become irrelevant? 3. How to modularize apps so that they can be easily composed by LLM:s? a. My hunch: making apps modular and composable would work really well with LLM:s already now and even better in the future. Doesn't matter if functional or OOP, as long as the LLM can understand the logic. 4. What kinds of new apps and malleable software will LLM:s enable? 5. Also: LLM:s could finally enable removing some boundaries between different programming tools, library ecosystems, etc, by enabling translations/bridges automatically. Any thoughts? |
| 17 comments | |
|
|
Kartik Agaram
2023-10-06 14:46 #
The next paradigm beyond capitalism These are some rough thoughts I wasn't expecting to share publicly for a long time, if at all, but it seems to be inevitable for me to hit a point of, wth, throw it out there. In this case the impetus was @Alex McLean's comments on ../linking-together/1696567536.918589.html The way I see it, capitalism currently performs many load-bearing functions in the world, but the world today suffers from capitalism being the predominant engine of meaning/motivation. Why do we get out of bed and do anything? The places we tend to pay attention to are governed by social proof, a sense that others are paying attention. Social proof is in turn governed by status seeking; we all want to be "successful", and in our efforts to be successful we chase the prospects of success around us. We're more likely to attend to something if it promises to be successful. And finally, closing the loop, the metrics for "success" are basically money at root. Everything else seems to get grounded at some level of indirection in money. All this hit home particularly hard when listening to the first hour of episode 65 (totally awesome, and having nothing to do with the title), where @Ivan Reese at one point says, to be taken seriously you have to signal effort. And at a second point: one way to signal effort is to spend a lot of money. All totally right and obvious for the world we live in. And yet.. I'm kinda feeling done with seeing large projects spending lots of money as more intrinsically meaningful? We've seen many many examples of the same depressing way large projects with lots of money fail. Money invariably has strings attached. So, I'd like to live in a world where money exists, but more people consider it a satisficing rather than optimizing criterion. Something that inhabits the lower levels of Maslow's Hierarchy and gets banished from the upper level that it has somehow infected while we weren't looking. What might replace money as a source of meaning and motivation for programmers? One answer I've been rolling around in my mouth and feeling increasingly ok with is: durability. Durability has a long track record (i.e. monuments) as something that can motivate people. Software is currently really bad at building durable artifacts, and not I think for any intrinsic reason. We just haven't prioritized it. I think a world where software artifacts can be easily run a decade later -- without any modification -- would be a significantly better world than the one we live in. In such a world, software would be part of the solution rather than the problem. So, with that lengthy preamble, here's the draft I've been noodling on. Draft: A programmer's pledge Given that: • We are on this planet for a brief time and will take nothing with us when we leave; and that • The effects of our actions compound for good and for ill, long after we are gone, in ways we cannot always anticipate; and that • I want to be helpful to others, and for the good in my actions to outweigh the bad; and that • I want to persuade you that I truly believe the above, that I want to be helpful more than I care about my own gain and aggrandizement; Therefore, I pledge to: • Tell you, when I build anything, what I hope to gain from it. If it's money I'll tell you how much in inflation-adjusted currency, and I'll commit to giving away anything beyond that while unencumbering any secrets it took to create it. If I create organizations or foundations around what I build, I'll enshrine these limits on value capture into their bylaws. • Tell you, up front, when it will be done. I'll provide a clear test for features I will add, and when I will stop adding features. • Show my thought process in my efforts to make it durable. Even after it's done, it might need changes to be runnable on people's computers. What have I done to minimize the likelihood of such changes? What have I learned from past projects that makes this one more durable than them? |
| 91 comments | |
|
|
Qqwy / Marten
2023-10-04 02:18 #
And making a separate topic for the second half of the episode about the list of other ‘things considered harmful’ because it is mostly separate from the previous discussion ^_^’: • Most of your takes are actually luke-warm, in my opinion. :slightly_smiling_face: • Agile (with capital A) considered harmful: 100% agree with your discussion here. • Dependency Injection considered harmful: I disagree. You can definitely use it too much and it would be better if people would approach it from the dependency inversion principle side, but it definitely is better than tightly coupling your code on implementation details. And related to that, I’d like to add: • Inheritance considered harmful: Why do we still teach new programmers how to do inheritance? Besides ‘prefer composition over inheritance’, have we not learned in the last 20-ish years that doing polymorphism based on interfaces/traits creates much more maintainable code? |
| 4 comments | |
|
|
Qqwy / Marten
2023-10-04 02:01 #
Some thoughts re: ‘67 Considered Harmful’: Superparentheses: Love the discussion about this topic :stuck_out_tongue:. Haskell has $ which means ‘opening parenthesis that is closed by the end of the line’ which gets a bit close to the idea of a ‘super opening parenthesis’. C and GOTO: C came out after this paper, and its goto statement was neutered: It only allows local jumps (remaining in the same function) and only to hard-coded labels (though a common GCC compiler extension extends this to allow dynamic labels). The closest C gets to unrestricted GOTO is setjmp/longjmp; but here the callee decides where you jump to (just like with exceptions) so you can really only jump up on the stack, making them slightly less painful to reason about. Neither gets used a lot: I mainly know the goto sosueme idiom from a few of the talks of Alexei Alexandrescu in which he uses it in a hot code path because the resulting machine code is better optimized. And setjmp/longjmp is used in some places to emulate exceptions or coroutines in plain C, but whenever the OS provides higher-level abstractions to use here they are preferred (just like how OS support for threading is better than rolling your own spin-locks). EDIT: Also, love your relentless efforts to add the Dijkstra sting every time :joy:. Editing this episode must have taken painfully long :bow:. |
| 8 comments | |
|
|
Duncan Cragg
2023-10-03 15:30 #
I went away from FoC for a few weeks and dropped by today and I have to say I'm blown away by the diversity of creative and innovative work being brought to light here. And, bizarrely, how little discussion is being initiated by the posts! Is everyone so focused on their own stuff that they're not available for engaging in a broader perspective? I'm worried that a lot of great stuff could be going the wrong way or could fizzle simply through lack of community coherence. Dunno. Whaddyall think? |
| 25 comments | |
|
|
Alex McLean
2023-10-02 02:17 #
Reflecting more on Amy Ko's recent work on Wordplay, I think part of what makes it successful is that it's an art project - playing with typography is just a really nice domain to make alternative programming languages in - playing with symbols, with symbols. It's a shame that the arts are often pushed out of 'future of coding' type circles. E.g. compare the first LIVE workshop on Live Programming which had loads of music-focussed contributions, with recent editions where the focus seems much more on abstract ideas for which 'real world' applications have not yet been found. My understanding is that part of the reason for this is that for CS academics, associating their work with creative applications is generally seen very much as a career-limiting move |
| 23 comments | |
|
|
hamish todd
2023-09-29 04:07 #
I'm making a basic color picker for my designed-for-children VR animation program (streaming development here https://www.twitch.tv/hamish_todd/videos). Simple question: is it a good idea for "eraser" to be a "color" in my color picker, rather than its own button? Veeeeery limited number of buttons on a VR controller and I want to minimize menus! |
| 2 comments | |
| # |
Lu Wilson
2023-09-29 00:38 #
Re: Looming Demise bonus episode It reminds me of this |
| 2 comments | |
|
|
Tim Lavoie
2023-09-25 22:36 #
Re: Future off Coding - Apple Vision & Dynamicland Probably unpopular ideas, but here's my Black Mirror take: • What's tasteful won't matter, as long as it's popular. • Success of these "spatial computing" concepts will come from what gets the masses interested. • Whatever will be successful, porn will do first, as they always have. Now the action is with you, or you're "there". Consent from other people actually with you is left as an exercise for the reader. • Ditto for Snapchat-like filters that are applied to other people in the room with you. Everyone naked? Everyone's a furry? Maybe we present virtually as we choose for other goggle-heads? Back to consent again, for, "who wants to see the naked furry centaur in the coffee shop?" • Extra points for integrating Dynamicland-like badges that people wear, interpreted by the goggles as, "don't VR-alter me." Another one for, "don't apply facial recognition to me." Naturally, law enforcement gets a version that the latter filter doesn't apply for, and the tech leaks to hacky patches for consumer hardware. |
| 7 comments | |
|
|
Peter Saxton
2023-09-24 13:45 #
This was an interesting video. Not sure what the state of the project is, but it got me thinking along similar lines. https://www.youtube.com/watch?v=NxsaHxON350 |
|
|
Tim Lavoie
2023-09-22 17:35 #
I had a couple thoughts bouncing around, listening to, 66 • A Small Matter of Programming by Bonnie Nardi. • Jimmy mentioned writing browser extensions. Just recently, there was a thread (probably on HN), with discussion of people sharing filter snippets for uBlock Origin. It turns out that besides simply filtering links and so on, the snippets are also being used to modify styles and visibility for all sorts of things that people find needing change on various web sites. This, along with the whole "view source" era discussion, suggests that it hasn't gone away. Browser extensions such as uBlock Origin also include a colour-style picker for identifying the elements on the page that you're interested in. So in a way, it is very much enabling a simple sort of end-user programming, right in the browser. You won't see the back-end, but can manipulate the DOM that is very much on the client. • Regarding the discussion in the episode on early education, teaching kids programming, I was thinking along the lines of teaching the means to observe. "View source" is one such part, along with browser dev-tools. Perhaps most people won't be interested in modifying the programs they use, but teaching the idea that introspection, via software-as-microscope, is possible. Too much of our computing is directed to being strictly consumption, that I suspect few people will even think of being able to look at the innards. Think Wireshark for networks, source-level debuggers where you have source, or binary analysis tools where you don't. (Probably related, I got a Snapshot cartridge for the C64 as a youth, and was amazed at being able to capture the entire state of a program, fiddle with it, and save it as an executable to resume.) |
| 14 comments | |
|
|
Alex McLean
2023-09-22 01:35 #
One thing I've noticed working with Realtalk is that the natural language style tends to have a trade-off in making things easy to read, but a bit harder to write.. You can read them like English sentences but if you try to write them that way you probably will get a connective wrong or some other subtle thing and it won't parse or won't communicate with something else. More generally I think it's easy to conflate readability and writeability, they're obviously related but still quite different properties. Actually for a lot of things writeability is far more important than readability. E.g. when live-coding music you don't necessarily have to read/understand exactly what code is doing because you can understand the code by experiencing the results while writing, rather than reading the code. |
| 7 comments | |
|
|
Alex McLean
2023-09-21 01:22 #
On another inform tip, I really enjoyed this talk from Graham Nelson, with lots of take-home ideas for making a learnable language that's engaging and open to change https://www.youtube.com/watch?v=ZL7HjuFyKeE |
|
|
Konrad Hinsen
2023-09-21 00:06 #
> Where do you think a language like Inform fall on the ‘formal’ vs ‘informal’ spectrum? Preliminary question; what exactly changes from one end to the other of that spectrum? My current answer is: how much of the total information conveyed is formal. I'd love to hear from others who have thought about this question, or know about work on this topic in the literature. To illustrate my definition, a few examples: • Machine code is near 100% formal. • Standard programming languages are mostly formal, the informal part being the variable names, which convey context-dependent information to humans but nothing to the compiler/interpreter. • Markup languages (HTML, Markdown, ...) are mostly informal, because the formalized information is not the most relevant part. You could strip it away and the rest would still fulfill its purpose. There are lots of subtleties I am glossing over. Example: A Python program saying print("...") with a 100 KB string is basically just decorated informal prose. My definition applies to typical or intended use, not possible extremes. Back to Inform: I cannot judge from the example which information is extracted from the code by formal processing. Is this a controlled natural language, like Attempto ? Or plain English from which some engine extracts isolated keywords? |
| 10 comments | |
|
|
Qqwy / Marten
2023-09-20 08:49 #
Hi all! New here, but latest episode of Future of Coding (‘66 - a Small Matter of Programming’) made me think of something closely related. Part of the discussion was about using formal vs informal language to communicate with a computer, and whether ‘end-user programming’ would be feasible using those methods or not. One tool which came to mind is ‘Inform’. It is a tool (mainly a programming language, though it also ships with its own IDE-like thing) to write text adventure games. But rather than being geared towards programmers, it is geared towards writers. An example of a simple program: The Cabin is a room. "The front of the small cabin is entirely occupied with navigational instruments, a radar display, and radios for calling back to shore. Along each side runs a bench with faded blue vinyl cushions, which can be lifted to reveal the storage space underneath. A glass case against the wall contains several fishing rods. Some points for consideration are: • Where do you think a language like Inform fall on the ‘formal’ vs ‘informal’ spectrum? • Inform is perhaps the most widely used tool to create text adventures with today. Could this be considered a success story where non-programmer end users were able to build something through ‘programming’? |
| 5 comments | |
|
|
Nilesh Trivedi
2023-09-20 01:50 #
@Shobhit Srivastava @Prabhanshu Gupta @Ravi Chandra Padmala and others: Let's have a FoC meetup in Bengaluru? Happy to host in Domlur. |
| 13 comments | |
|
|
Guyren Howe
2023-09-19 10:43 #
Why on earth, in this era of many-gigabyte machines, don’t all programming languages have a time-travel mode for debugging? |
| 13 comments | |
|
|
Paul Tarvydas
2023-09-18 18:24 #
@Ivan Reese and @Alex McLean mentioned “...hand drawn programming environments...“. The first thing that I think of when I hear this is “whiteboards”. What are the dimensions involved in whiteboards? x/y/t. T goes forwards (e.g. adding new details by drawing them in over time) and backwards (erasing parts of drawings). Iteration. Scrubbing. |
| 7 comments | |
|
|
patcon
2023-09-15 10:32 #
hey all! i was at a future of coding meetup maybe 6 months ago (at Newspeak in London UK), and someone gave an amazing presentation showing what I think was a collab drawing tool that continuously scrolling, which I think used some sort of service to handle websockets between a lot of ppl. Anyone recall this and have any hints on what this tool, services or person was called??? THANK YOU |
| 5 comments | |
|
|
Grant Forrest
2023-09-09 18:45 #
Branching out from the discussions about the current state of AI agents vs. how they were imagined in the text from the recent podcast episode... I was glad to hear our hosts were on a similar thought-track when discussing the "send this draft to the rest of the group and let me know when they've read it" example regarding how programmers tend to parse the last bit as "let me know when the metrics indicate they scrolled to the end" (etc) whereas a human agent would parse it as "and follow up with them after a reasonable time to ask if they've read it or not." One thing that struck me was the number of times I've told a white lie in that kind of scenario. Yes, I read it! (No, I haven't, but I just pulled it up when you asked and I'm skimming it now before the meeting starts). Dishonesty with the metrics-mindset takes a different form. In simple forms, it's like terms of service pages which gate the "agree" button behind a scroll value... You scroll to the end to lie. But if the designers of those metrics were somehow able to perfect them (eye tracking? a quiz at the end?) then an AI agent could force a more accurate/truthful answer from you. All that to get to my point... Do we have a right to lie about this stuff? How important is it for us to be able to present less-than-truthful representations to other people even if the medium is via an AI agent? If we don't include this concern in our designs, are we facilitating a world of micro-surveillance of coworkers and friends? |
| 16 comments | |
|
|
Andreas S.
2023-09-07 03:29 #
Hello FoC Community :slightly_smiling_face: I have something in mind which I don't know exactly how difficult it i or even possible so I'm going to ask for your council here. I have some files 2-4 GB and I want to share those with a friend. What would be the best way to do so? Assuming that I don't want to use dropbox or google drive. I vaguely remember that there was a programm called wormwhole or somethign which did this using python. I would kike to have something in go which has nice cross OS binaries. This looks nice but I would want to have a simple exchange application wher eI can use it instead of a lib to be implemented. https://github.com/filecoin-project/go-data-transfer/blob/ma… Another question - fundamental in nature- if I join a P2P net what do I need to exchange with my peer - out of band such that we can exchange files through the P2P network. ie.e. how do we find each other? Thank you for your thoughts and ideas. |
| 9 comments | |
|
|
Kartik Agaram
2023-09-06 10:18 #
Question for people who've read Tools for Conviviality Do you think "convivial" in the Illich sense has connotations of communality? Like, having a strong sense of membership in a coherent, shared community? I'd never really thought of it that way, but I was just chatting with a friend who's only skimmed the essay, and had that impression. Obviously I think I'm right, but I also wonder if I've been reading my own bias towards independence and self-sufficiency into the essay. I'd appreciate thoughts. "The future is a disagreement with the past about what is important." And at this point it doesn't matter what Illich intended, only what we in the audience tend to make of his words. If we tend to agree that conviviality is independent of social arrangements, and that it is equally applicable to gregarious people who like to be cheek by jowl with others and introverts who are more off on their own, this might suggest that the word "conviviality" isn't an ideal term in the year 2023 for a value a lot of us tend to aim towards here. It was a frontrunner in our long thread about renaming FoC (https://linen.futureofcoding.org/t/42821/here-s-a-big-one-ap…) but perhaps it has some distracting connotations. |
| 20 comments | |
|
|
Jeremy Vuillermet
2023-09-04 04:38 #
Hi! I recently noticed how I struggle regrouping things by topic/task/project on my different devices (laptop, phone). Quite frequently, one topic can be spread across 5+ apps/website. My less than ideal solution is to introduce another aggregator app (roam research in my case) and paste & tags different links when possible. Arc browser spaces also helps with that. The issue is that it's very manual and not worth for small ad hoc topic and researches. Is this a problem you are facing? How do you solve/work-around it? Any interesting links on the topic? I believe it could & should be solved at the OS level and found really interesting project: https://playb.it/, MercuryOS, https://alexanderobenauer.com/labnotes/000/ but I feel like there should be more |
| 2 comments | |
|
|
Steve Dekorte
2023-09-02 17:11 #
Thoughts? https://twitter.com/cis_female/status/1697763571751674297?s=20 |
| 13 comments | |
|
|
Eli Mellen
2023-08-28 09:57 #
A question for ya’ll doing thinking on future of coding things: When/if you think about the accessibility (read here as “a11y”) of the future of coding do you consider accessibility as an attribute of the folks using your thing (e.g. a need) or an attribute of your design (e.g. a feature)? |
| 14 comments | |
|
|
Jim Meyer
2023-08-28 09:45 #
A one minute interaction with a digital product at 60FP on an HD RGB screen flows through a creative/generative space of 125,241,246,351,360,000 pixel variations. We need spaceships to explore this space, but we got rectangles with drag handles instead. |
| 1 comments | |
|
|
Ivan Reese
2023-08-28 07:52 #
Quick reminder — please post replies as threaded replies. Thanks! |
| 1 comments | |
|
|
Martin Sandin
2023-08-28 07:48 #
I might be missing context here but the fact that type systems are logic languages should be uncontroversial given that that's what the Curry Howard Correspondence is about. Though I'm not very well read I think that using "complete" generic logic languages/solver (as a component) in solving type equations ought to be well trodden ground, my first thought went to https://github.com/rust-lang/chalk as one example. I'd be looking at what one might give up doing so as the reason why it doesn't happen more: speed? guaranteed termination? good error messages? |
| 2 comments | |
|
|
Paul Tarvydas
2023-08-28 07:35 #
… |
|
|
Marcelle Rusu
2023-08-28 07:04 #
For some time I've thought that type systems are essentially ad-hoc logic languages. So.. why not use a full on logic language (prolog or something) to statically analyze your codebase instead of keep patching onto a type system, it appears to me that logic languages are simpler & more expressive than most type systems. I'm starting to work on this for my language, and creating a logic language in efforts to also understand logic programming better. Another advantage I can think of is that if a the logic language is expressive enough to type even the most advanced languages as well as the weakest, it could be used as a shared interface between languages to understand at least parts of each others type systems, as well as be a tool for user extension for additional static analysis specific to their project. I'm basically thinking something like this. # here's a sample program in my (object oriented) language generated logic program in pseudo syntax (#A is a pattern to check value is type of A, ?a is like prolog's A, {...} is map literal.) -- preloaded facts The specifics of my logic language is likely flawed, but I'm curious about the general idea of using a fully-fledged logic language to generate a program in & run instead of generated a typed AST and running ad-hoc type systems. My question is, what are people's thoughts on this? Any previous work in this area? Any obvious flaws? |
| 21 comments | |
|
|
Daniel Buckmaster
2023-08-24 17:57 #
In Episode 66 there was a long discussion about an idea I've come to know as the reality of abstractions. I got that phrasing from David Deutsch in The Beginning Of Infinity. I've long wanted to write about this in connection to programming, where we talk a lot about "abstractions", but in a very different sense* to the way Deutsch does. In lieu of doing that (which sounds like a lot of work) I will just post some of my favourite Deutsch quotes about it. > Reductionism and holism are both mistakes. In reality, explanations do not form a hierarchy with the lowest level being the most fundamental. Rather, explanations at any level of emergence can be fundamental. Abstract entities are real, and can play a role in causing physical phenomena. Causation is itself such an abstraction. > When we use theories about emergent physical quantities to explain the behaviour of water in a kettle, we are using an abstraction - an ‘idealized’ model of the kettle that ignores most of its details - as an approximation to a real physical system. But when we use a computer to investigate prime numbers, we are doing the reverse: we are using the physical computer as an approximation to an abstract one which perfectly models prime numbers. Unlike any real computer, the latter never goes wrong, requires no maintenance, and has unlimited memory and unlimited time to run its program. > Abstractions are essential to a fuller explanation. You know that if your computer beats you at chess, it is really the program that has beaten you, not the silicon atoms or the computer as such. [Nor, I would add, the arrangements of pixels on the screen which symbolize knights, pawns, etc.] The abstract program is instantiated physically as a high-level behaviour of vast numbers of atoms, but the explanation of why it has beaten you cannot be expressed without also referring to the program in its own right. That program has also been instantiated, unchanged, in a long chain of different physical substrates, including neurons in the brains of the programmers and radio waves when you downloaded the program via wireless networking, and finally as states of long- and short-term memory banks in your computer. The specifics of that chain of instantiations may be relevant to explaining how the program reached you, but it is irrelevant to why it beat you: there, the content of the knowledge (in it, and in you) is the whole story. That story is an explanation that refers ineluctably to abstractions; and therefore those abstractions exist, and really do affect physical objects in the way required by the explanation. To connect this to the content of the episode - I think all the different representations of a cube on a screen are "real". The parts that you might dismiss as not having an "effect on the world", like the data structures in RAM, or the textual representation stored on disk, are as unavoidably real at their own levels of abstraction. |
| 26 comments | |
|
|
Kartik Agaram
2023-08-13 09:59 #
Last night I spent some time documenting an almost-trivial state machine that I keep getting wrong: https://docs.google.com/document/d/1EbK4AxDCDWonMa8KyGJFX4jllXXLew0qBsGxsmqoYqk State machines are hard! • We usually have one in our head when we program. • The abstract state in my head is usually made up of multiple concrete variables in the program. • Mutations happen to variables, but it's not obvious at each how the abstract state is changing. • The state machine in my head often evolves, which makes documentation challenging to keep up to date. Which is why I think nobody builds documents like these. Tell me how immutability or State Charts will solve all my problems :slightly_smiling_face: |
| 77 comments | |
|
|
Mariano Guerra
2023-08-10 02:23 #
What do you think about this? > Despite all the effort that has gone into it, it doesn’t look like programming language design has any real compounding power. There are better and worse languages, but other market and technical forces can swamp language choices. https://twitter.com/ID_AA_Carmack/status/1689297553408315392 |
| 20 comments | |
|
|
Denny Vrandečić
2023-08-03 20:13 #
Is there a reasonably decent JavaScript library that allows me to have a reasonably terminal-y experience in the browser, so I can implement a shell? Ideally with history, autocomplete, colors, etc. - and then with the ability to add DOM nodes too, so I can click, show images, etc. Preferably no backend necessary. |
| 17 comments | |
|
|
Josh Cho
2023-08-03 06:25 #
Retrofitting of Medium I tend to think every time a new medium is introduced, all the contents of the previous medium are ported over, without regard for fully understanding the new medium. For instance, films matured when it stopped porting over books, games matured when it stopped porting over movies, etc. An excellent example of this is Outer Wilds, a space-exploration time-traveling game which is simply impossible to recreate in any other medium. It fulfills the medium. Given that, I think two new forms of medium are being introduced in the next 5 years: LLMs and VR. If we accept the supposition that there will be a lot of retrofitting of the medium, i.e. chat into LLMs, games into VR, what are the content that will truly fulfill the mediums of LLMs and VR? |
| 32 comments | |
|
|
Eli Mellen
2023-08-02 07:03 #
You know that thing when playing Pokemon games where after you throw a Pokeball you frantically tap the action button to ... do something? It is never made clear if this helps or even does anything at all. What are other ghost-mechanics like this in games or software that you know of, where folks often take actions that aren’t clearly signposted to actually do anything? The most immediate other example that comes to mind is swiping apps away in the iOS app switcher, but that isn’t exactly the same thing, since, even if it doesn’t free up memory, it is a direct interaction that alters state (removes options from the app switcher). |
| 15 comments | |
|
|
Peter Saxton
2023-07-28 14:03 #
I've found this article on using CozoDB (A relational/graph database) as the hypocampus for AI. It's an interesting read though it's probably best to leave it explained in their own words https://docs.cozodb.org/en/latest/releases/v0.6.html What do people think, is this approach plausible? Will it make a notcable different to what AI's can do? The author has also written their own knowledge management tool so interesting all round. |
| 2 comments | |
|
|
Martin Shaw
2023-07-27 23:21 #
https://www.centrepompidou.fr/en/program/calendar/event/Lan1nnY |
|
|
Martin Shaw
2023-07-27 23:16 #
Hi all, for those of us who have an interest in learning about how to build a more wonderful future and who wish to be inspired by those rare few actually building something different, I recommend that you visit and enjoy the Norman Foster exhibit at the Centre Pompidou which ends on the 7th of August. Those who are unfamiliar may not see the relevance of a building architect's work to programmers and software / hardware designers, but I assure you that his long history of work is exceptionally relevant. His designs are a deeply-considered human-scale 'high-tech' alternative to traditionalist buildings and to postmodern buildings. With tonnes of innovative features which had never been implemented before and which seemed obvious and common-sense after the fact. This work sounds a lot like what we are working on in the software, hardware and otherwise industrial realms. If you are in Paris or are able to get to Paris, entry is 17 euros. I'll be going on the 7th of August if anyone is around for drinks, lunch and/or a chat :slightly_smiling_face: |
| 5 comments | |
|
|
Mariano Guerra
2023-07-19 02:24 #
do you use drag & drop on gmail? why? why not? |
| 15 comments | |
| # |
Jason Morris
2023-07-18 17:19 #
The default behaviour for a validated text field in Blockly is to turn the background red while the value is invalid, and if the user hits enter (or nvaigates away from the field) while the field is red, abandon the change and return the field to the previous value. This feels broken to me. In the visual interface, if you try to put something somewhere and it doesn't "fit", the piece doesn't go back where it started. It stays close to where you tried to put it, but far enough away to visually indicate that it isn't connected. So you get immediate feedback that it didn't work, and what was done instead. But in the text field, if I have "value" and I change it to "value$", and the dollar sign is invalid, the field will only turn red between when I hit dollarsign and when I hit enter, and then it will go back to the previous value, and just hope I notice that it didn't do what I wanted it to do. For people who look at the keys while typing, that's not going to work. Blockly steadfastly tries to avoid invalid state, presumably because syntax errors aren't any fun. But in the visual interface it accomplishes that by making invalid syntax impossible to generate, and when it modifies the syntax for you to keep it valid, that's easy to see. Here, it lets you type an invalid value, let's you hit enter, and the fact it didn't work is potentially invisible. It feels like it should be possible to do better. Has anyone seen an interface for entering values into a text field that solves this problem? Where the field maintains a valid value, starting with a default, but it also allows you to maintain a view on failed attempts to modify it, so that you can correct them? Should the screen just go modal, not responding to "enter" or clicks outside the editor while the value is invalid? Should the failed attempt to change it be noted somewhere? Or is maintaining valid state in text fields a silly goal, and instead you should just throw errors at a later step, or something? |
| 6 comments | |
|
|
Paul Tarvydas
2023-07-17 20:28 #
# What are the Steps in Creating a Compiler? ## What do we need to know to compile a piece of code? ## Why Should I Care? ## How To Cheat? https://publish.obsidian.md/programmingsimplicity/2023-07-17… |
| # |
Scott
2023-07-14 14:10 #
I've been thinking a lot about the patterns and architectures we're going to see start to emerge that lend themselves well to being written by generative AI and came across this technique being used by a library called Marvin (https://github.com/PrefectHQ/marvin) where they limit the tokens the LLM can respond with to just a single token corresponding to a value in an enum. They then have it respond with the value as the response to a natural language query. This is extra interesting because responding with a single token is relatively fast and cheap. The example they give is using it in routing: > USER_PROFILE = "/user-profile" But I feel like there's a seed of an idea here that points to what a piece of an LLM-core architecture may look like. I experimented with the idea a bit in chatgpt earlier today (screenshots attached) and I'd love to know if anyone finds this interesting or has any thoughts/opinions. |
| 5 comments | |
|
|
Duncan Cragg
2023-07-13 13:42 #
I think this topic, based as it is on personal experience, deserves better visibility, so hopefully Rachel won't mind my reposting it here! :hugging_face: |
| 2 comments | |
|
|
Daniel Buckmaster
2023-07-11 16:30 #
What we talk about when we talk about expressivity I enjoyed the little tangent on expressivity in the latest episode. I've had thoughts on this recently and it prompted me to skim Felleisen's paper. I really resonated with the hosts' reframing of expressivity as being the part of the language that's oriented towards the programmer, not towards the machine. I currently think that most programmers, when talking about "expressivity", actually mean essentially two things: 1. I can use my own words 2. I am not restricted by grammar These things are strongly tied to writing, as that's still how we do most of our coding. "Using my own words" is literally that - in any given chunk of source text, how many of the words were chosen by the programmer (e.g. to be particular to their domain or their theory of the program) and how many were specified by the language or environment? Punctuation, I think, also counts as words the programmer didn't get to choose. Random examples: • In Ruby, one can create little DSLs where almost all words in a specific part of the code are "my own words" • In assembly languages, the programmer can choose almost none of the words (except labels?) • Being able to rename imported symbols lets the programmer choose their own words in specific contexts (same goes for type aliases, etc.) • Languages with few keywords should tend to have more words chosen by the programmer... or at least, by the authors of the standard library? I equate being "unrestricted by grammar" roughly to whether a language is statement-oriented or expression-oriented. The Austral spec has a great section on why it chose to be statement-oriented, and concludes that "a statement-oriented syntax is less simple, but it forces code to be structurally simple": https://austral-lang.org/spec/spec.html#stmt-orientation In Austral, it's an ideological choice to force programs into a certain shape. But in general, it seems to me that languages with less "grammatical restrictions" in their parser are described as more expressive. Maybe this is just correlation with other features of those languages. I'd love to know how everyone else understands "expressivitiy" when we talk about programming. |
| 35 comments | |
|
|
Walker Griggs
2023-07-10 12:23 #
I've been thinking a lot about apprenticeships over the last year and specifically the lack of apprenticeships in tech. My mental model of apprenticeships is primary formed around how they apply to the arts -- people learning a craft from a single practitioner who has worked their life to develop a personal style or system. But apprenticeships also exist in trade, maybe even more so. Fundamentally, apprenticeships facilitate knowledge transfer -- all industries can benefit from that, no? So, I wonder why apprenticeships are far less common in software? • Is it because so many industry vets were themselves self taught and so that mindset has lingered? • Is it that so much of our industry is focused on access, democratization, and open sharing of information? • Could it be that we need to train more software engineers than we have hours in the day, and that need for more qualified minds has pushed us beyond the 1-on-1 learning paradigm and towards bootcamps etc? • Maybe so much of software and the knowledge around it is already accessible, so apprenticeships are just overkill? That said, there are still pockets of software where subject matter expertise and knowledge silos outweigh what is either 1) commonly taught in schools or 2) generally available. • Software doesn't have the same requirements around professional certifications -- could that be at play? Generally, do you all think there's value in apprenticeships or should we (continue to) move in the other direction entirely -- teach the masses? In that sense, I could see the argument that apprenticeships border on nepotism and are actually a form of gatekeeping. Have any of you been part of a formal apprenticeship (on either end)? If so, what conditions made that possible? |
| 24 comments | |
|
|
Grant Forrest
2023-07-08 16:46 #
Another thing. My wife worked at a legal research company for a while and she kept pausing the podcast (I subjected her to) to comment on the legal side of things. One thing she pointed out is that civil law is about codifying and interpreting laws to judge situations, but common law is basically a series of precedents. You try a case, if it's novel you invent a judgment. If it's similar to a previous case you adopt/adapt the previous judgment and it becomes a new more refined precedent for future situations. Not sure the mapping here. I'm imagining when Ivan puts in his address to buy a ticket, instead of "invalid address" and end of story, the software responds, "this format of address is new to us, please await trial" and forwards it to the Airline Judge who renders judgment that is then encoded as precedent in the software itself. |
| 2 comments | |
|
|
Grant Forrest
2023-07-08 16:39 #
Only halfway through the latest podcast ep but my imagination is piqued. Is there a version of, like, unit testing, where the software generates some randomized states based on its internal state and unknown inputs, presents the outcome as part of a report, and asks humans to correct any erroneous assumptions or missing contingencies? IDK how to even describe what I'm thinking of but I feel like it must exist, or maybe be theoretical in the emerging AI models of creating software. Kind of fuzz testing, I guess. My brain is going somewhere bigger with this, though, maybe I'll check in with it again once I find time to finish the podcast. |
| 6 comments | |
|
|
Ivan Reese
2023-07-08 15:54 #
I'm suddenly bothered by the fact that code comments are always the same size. Sure, I've seen some people play with rich text in their code editor, applying bold or font size the same way you apply color. Atom's CSS was great. But that's outside the code. Your font size tweaks aren't going in the repo. (That'd be a tabs vs spaces fight for the ages!) But… what if I want to leave a little pocketbook tucked into the back flap of a function? Unobtrusive. It's there as a reference when you need it. Within, you can fully explain why things are the way they are. You can talk about the history of this code. It's the sort of stuff that you'd put into a wiki, or spread across a series of commit messages — but it's right there in the codebase, but it's tiny and off to the side. There when you need it, easy to ignore when you don't. Makes me wonder about other ways that being able to choose the size of representation in a program — independently from typical size units of code (ie: lines) — could be useful. Eg: at the main entry point of a well-factored complex program, where you're dispatching off to various other subsystems, things deserve to be quite large. Makes me wonder about other things that ought to live inside the codebase. To start: every feature of Github? (Consider that it serves their interests that, say, the discussion around an issue or PR lives on their cloud, not in the repo.) |
| 56 comments | |
|
|
Martin Shaw
2023-07-07 21:39 #
I know that it doesn't necessarily implement many of the points from the 'manifesto' and televisions are still attention sinks, but I always thought that the Samsung 'The Frame' TV was interesting because it move the centerpiece of the lounge from a big, cold, out-of-place television to an inquisitive wall of artwork until the user chooses that they want to watch television. |
| 4 comments | |
|
|
Martin Shaw
2023-07-07 21:35 #
Been reading a lot about Calm Tech (https://calmtech.com/), technology designed to require a minimum of the user's repeated attention. Products/projects which make information available to the user on the user's request and not the other way around. As someone who has wasted plenty of time on social media, I find the design ideas fleshed out on the site and related projects fascinating. Does anyone else have an interest? Seems like a positive (for once) way 'back to the future' of useful home-based tech. |
| 4 comments | |
|
|
Beni Cherniavsky-Paskin
2023-07-07 07:55 #
Say, has anyone ever tried BASIC's non-consecutive numbers for spreadsheet coordinates? We programmers always laugh at spreadsheet's use of coordinates ("like machine code without assembly") but few users avail themselves of features to name ranges / structured/hierarchical data etc. But there are real annoyances with what-you-see-is-what-you count consecutive coordinates: They mostly shift correctly on insertions/deletions, BUT one needs to grok $A4 vs. B$7 notation, which I suspect many don't. Getting range E3:F34 boundaries for formulas exactly right is always a hassle. So I wonder if features like named ranges are "premature formalization" then maybe "structured numbers" in the BASIC's style could serve as more accessible "semi-formalization"? BASIC users quickly learnt conventions like "increment by 10, start functions on hundreds, big modules on thousands". And this allowed them to avoid re-numbering almost entirely! (This was good UX in teletype line-editor era :printer:, and of course now we have full-screen editors and can insert/delete — no need to "increment from 10 to 20 so you can later insert 15". But a 2nd aspect that imho was really genius was the numbers were stable, helping your brain :bike::brain:. Your transcript :scroll: had partial LISTings, followed by chains of edit actions (poor man's git) + REPL experiments, and the fact that line 60 remains 60 throught helped you mentally interpret that history — making you a better debugging detective :female-detective:. It's insane to remember what GOSUB 437 means; easier if you assign semi-systematic round GOSUB 2100.) So, suppose spreadsheets let you use higher numbers/column names freely, by skipping display of unoccupied rows/columns. • If you have a long table that might grow, you won't put =SUM(...) computation directly beneath it; you put it at next 100 or 1000 — but it will still display close to its bottom. And you can type the range as 10:99 from the start. • With some foresight allocating "big enough" ranges for tables, you might never run into situations where $B7 vs. B$7 matters. (This means spreadsheet should become smarter yet in renumbering on insert/delete — do shift rows/columns, but stop at next unoccopied "moat".) • To introduce users to the idea, don't show consecutive numbers/letters. Even in an empty spreadsheet, after some rows/columns, skip to some far-away numbers like 100 and 1000! • Perhaps it might also subsume the feature of "freezing" some rows/column from scrolling? mockup below has one fake "scrollbar" to suggest a portion could be scrolled separately. attaching a mockup to this thread (drawn in a regular spreadsheet:wink:) |
| 5 comments | |
|
|
Tim Lavoie
2023-07-06 14:01 #
Hi all. I just finished listening to the episode, "Interpreting the Rule(s) of Code by Laurence Diver". I wasn't sure it was going to hook me, but am so glad it did. I had a few thoughts bounce around as I was listening, though dog-walking on a trail. Hopefully they make some sense now. Where Ivan was talking about the problem of a program only being able to handle conditions for which it was designed, with no escape hatch, I wondered about exposing something like the restarts that Common Lisp has in its REPL. This probably isn't something you would offer to a user that you didn't trust with a REPL, but perhaps encountering a problem could default to selections of alternate solutions that are offered to the user. When restarts are offered in CL, the program execution is paused, so the choices for the user have all the context of what is on the stack at the time. Rather than just aborting (which is one option), one might take an extra step back and try something different. Web checkouts typically have a weak form of this, but I thought that perhaps very binary conditional checks could often be replaced with "one of" or combinations of options. Don't have that right address? (RR 2, Pfff!). Include some other means of providing a location that is accepted. Maybe some form of fuzzy logic, albeit unfashionable these days, guides the programmer into accepting a combination of responses that satisfy their fraud-prevention algorithm when taken together. https://malisper.me/debugging-lisp-part-4-restarts/ Also, the whole concern makes me think of the eventual corporate destination, "Computer Says No" from Little Britain. https://www.youtube.com/watch?v=CmjGUbZyopY |
| 2 comments | |
|
|
Eli Mellen
2023-07-06 13:53 #
around these parts we talk a lot about the technical aspects of the future of coding — what are some of the social or cultural aspects of the future of coding folks see? • See either holding us back from doing more future of coding flavored stuff out in the wild yonder • Or see in the future, allowing for new sorts of stuff |
| 5 comments | |
|
|
Sam Butler
2023-07-06 08:29 #
I want to be able to post microblog style content, and have it cross-post to different platforms (e.g. Twitter, Mastodon, LinkedIn, Facebook) — in a way that is resilient to corporate api hijinx. (Perhaps aligned with the approach/philosophy of this project, getting into browser automation? https://mschmitt.org/blog/save-liked-tweets-without-twitter-api/. Or this approach, based on local device automation?) I also think it would be cool to explore pulling content from multiple platforms and synthesizing them into a single alternative feed — sort of like an RSS for your Twitter, Facebook, LinkedIn, Mastodon, Reddit timelines. Again, in a way that is resilient to corporate api hijinx. Is anybody interested in exploring this? I would also be interested in low-energy and low-data/bandwidth approaches to doing this, because that's the world we're moving towards (hopefully) |
| 15 comments | |
|
|
Paul Tarvydas
2023-07-06 02:42 #
I’m looking for a link/conversation again. A while back a member posted a link to code for converting speech to text (free). Does anyone have a pointer to it? Or, suggestions on how to best search for it? |
| 2 comments | |
|
|
hamish todd
2023-07-04 14:06 #
I'm interested in the concept of a "spread", which I have seen discussed by Toby Schachman and @Joshua Horowitz partly in the context of dynamicland, though I forget where, anyone got a link? In my own system, I'm thinking I'll have them. |
| 8 comments | |
|
|
Jarno Montonen
2023-07-03 02:59 #
I run into this fairly recent (sent 2017) patent that seems to just describe an incremental parser which is used to 'enrich' textual program code with syntactic and semantic annotations. I don't really understand what the patent tries to protect and what is supposed to be the patent worthy invention here as for example tree-sitter existed in 2017 already. I'd be interested to hear any thoughts on this. https://patents.google.com/patent/US10684829B2/en |
| 6 comments | |
|
|
Duncan Cragg
2023-07-02 15:47 #
Dynamicland could be done better with Augmented Reality specs. All that frayable, water- and fire-damageable stuff. No version control? No backups? Those little test tube doodads will fall apart after a few months. Plus with AR you can actually use that amazing innovation they call the Inter Network. Argue away, humiliate me for my lack of Bret Victor worship! |
| 43 comments | |
|
|
Jan Ruzicka
2023-07-02 02:36 #
Recently, I realised that despite “vaguely knowing” what VPRI was doing (and trying to do), I never bothered to thoroughly read their reports and papers. Now that I took the time to read them, I feel like overall it’s been time well spent (I got inspiration and encouragement for some projects). I’d like to know if you know about the VPRI undertaking, and if you do, whether you read (some of) their papers/reports - see poll below. I’m also interested in similar experiences you had with other projects (thinking you know what they do, then having this understanding deepened by looking at their work more carefully). > :white_circle: I didn’t know about VPRI. > :large_blue_circle: I know about them, but don’t really know what they did. > :red_circle: I know what they did, but read nothing from their writings. > :dart: I read some of their reports. > :white_check_mark: I read some of their reports and specific papers. |
| 7 comments | |
|
|
Shalabh
2023-06-30 18:59 #
Hi everyone, I’ve been thinking about using hypertext instead of text files as the medium to represent programs and their executions. Programs contain a lot of cross references that are resolved only after the parser/runtime have had a go. IDEs also redo this parsing work to simulate the same cross references for easy editing. The idea is to embed these references in the medium itself. So, get rid of import statements, file boundaries and such. Each textual reference - function name, type name, any identifier really - would be link to the object it references. Unlike strongly structured environments, this allows some flexibility in representing partial and possibly invalid structures. I’m interested in implementations you know of that match this idea. |
| 31 comments | |
|
|
Duncan Cragg
2023-06-25 02:17 #
Hiya fellow futurists! I've started a Substack for my "Lab Notes". Please consider subscribing! https://duncancragg.substack.com/p/welcome-to-the-object-network-research |
| 13 comments | |
|
|
Kyra
2023-06-22 07:33 #
I have always thought Named Data Networking (a future infrastructure project older than IPFS) is really promising: https://named-data.net/ Think instead of naming locations, naming the data you're requesting, so it can be pulled from any host as efficiently as possible |
| 4 comments | |
|
|
Eli Mellen
2023-06-19 12:20 #
when you all work on a Future of Cod_ing_ flavored tool, do you think about ways to bake in certain sorts of interactions. As example: React lets ya build accessible, localized experiences, but it also lets ya make something that is wholly inaccessible, too. It is sort of agnostic on that front. Could a tool “force” an accessible experience, or be more strongly biased towards something like that? This line of thinking isn’t restricted to accessibility, it just seemed like an easy fruit to reach for when writing an example. Is this the kinda thing other folks think about when designing stuff? Do you have examples of it? |
| 15 comments | |
|
|
Jason Morris
2023-06-13 21:37 #
Does anyone here know anything (or know someone who knows something) about data governance practices in enterprise environments and is willing to answer some newbie questions? I think there may be a strong use case for my tool in that space, but I'm uninformed. |
| 28 comments | |
| # |
Simple Poll
2023-06-13 16:58 #
Of the handful of developers I've talked to over the past week, all but one say they're planning to get a Vision Pro specifically with the intent to create software for it. I'm curious whether folks here feel similarly. |
| 11 comments | |
|
|
Matthew Linkous
2023-06-13 09:38 #
I’m been thinking about this concept of a “full-stack” database. I’m curious what connotations that invokes for folks here and what features you might imagine a futuristic, “full-stack” database would have? Bonus question: is it “fullstack”, “full-stack” or “full stack”? |
| 42 comments | |
|
|
Jason Morris
2023-06-07 23:23 #
Has anyone seen controlled natural languages implemented in a structure-aware WYSIWYG XML editor? Is there some reason that wouldn't work? |
| 7 comments | |
|
|
Jason Morris
2023-06-07 13:26 #
Attending a conference today and yesterday about Blockly, the visual code editing environment. Big push toward bi-drectionality between code and blocks. For integration with existing code-bases, AI generation, collaboration with people not using visual editors, etc. At least two different approaches being investigated or used, and I would be inclined to use a completely different one. They don't realize it, but some of their problems are solved by some of the tools people here are working on. Like how do you make it so that you can generate blocks when the text is in an invalid state? Much easier to just avoid invalid states, like Blockly does! How can you avoid invalid states if the person isn't finished typing, and there are mandatory subnodes in the AST? Much easier to fill holes by default, like Blockly does. Essentially, they can't get to bidirectionality, because the text editing experience is structurally unaware. It's not possible with VSCode, but it is possible with Tylr, or anything that imposes a structure. Even ProseMirror would work better. But there is no need to stop at two concrete syntaxes, if you can sacrifice interface specific details (e.g. whitespace in text, grid position in Blockly), or keep them where they live (linter settings, a database of block locations outside the AST), you can operate directly on the AST in whatever tool you want. Has anyone played with a "headless" AST that could be used that way? It feels like all structural editors need one, particularly if they hope to facilitate collaborative editing. Has anyone tried putting two different coding interfaces over the same shared AST? |
| 11 comments | |
|
|
John Austin
2023-06-07 12:07 #
Hey all! I need a tool / stack suggestion. We'd like to track internal metrics for development like build performance stats, build size, source control size, etc. I'd like to be able to see these trends in a graph by date/commit. • CI tools can do some of this, but they only surface a small, inconfigurable set of metrics. Usually just test failures and build times. • There are monitoring solutions like Grafana Cloud, Datadog, but these all seem geared towards monitoring servers and cloud systems. They also assume you're ingesting massive amounts of data. What I really just want is a POST-able URL that I can spit metrics to, and a dashboard with some basic alerting. Is there something like this that exists? |
| 10 comments | |
|
|
Paul Tarvydas
2023-06-07 09:10 #
I wonder if anyone has tried to use Rosie as a replacement for grep? https://rosie-lang.org/doc/rosie.1.html?hidden=true IMO, the problem with grep is that it based on regular expressions, whereas PEG is more powerful. My favourite PEG is Ohm-JS but I am curious about Rosie... |
|
|
Walker Griggs
2023-06-06 14:55 #
I've been working on a specification for better, networked bookmarks. A problem I'm currently facing: I share a lot of links. I have a channel on my Slack workspace called #walkers-claptrap where I share anything / everything that I find noteworthy. It's a bit like #linking-together. That said, not everyone I share bookmarks with (and short remarks about them) are at work, so I'm frequently duplicating and sharing over multiple lines of communication (texting, social media, slack, etc). Even then, those channels aren't easily traversed and are organized linearly. I don't love sorting things by date when their value isn't directly scoped to time. I'd also prefer to publish some place that I own and syndicate elsewhere, so that rules out Twitter. semi-solution: The claptrap specification. A graph of links / small notes. The edges are based on relationships or membership with some group. A claptrap MUST be hosted plaintext and MAY be accessed with curl or similar tool (sort of like Carmack's .plan files). A claptrap MAY expose an RSS of updates to syndicate to channels etc. A claptrap MAY reference external claptrap nodes to network / branch beyond the local graph. Still very much a work in progress. Does anyone have a similar problem; do you have a solution you like? I want to bridge the gap between "personal knowledge base" and "sharing links into the ether" |
| 11 comments | |
|
|
Sophia Deng
2023-06-06 14:31 #
I'm currently thinking about whether Product Managers (or other non-coder end users) can be able to make direct changes to native product without Engineers. In the companies I've been at, there's been paper cuts and requests that engineers make to the product, which are time-consuming, tedious and take away from actual product/infra development. If there are guardrails that Engineers define on certain parts of the product, are there any problems to this idea? Curious what others think and/or have seen |
| 5 comments | |
|
|
Paul Tarvydas
2023-05-31 15:59 #
I think we need many different little languages and a substrate “language” (kernel) to bolt them all together. Note that, in electronics, there is/was something called “design rules” which is something more-than-type. In web-site design, one uses “input validation” which is like type-checking but on a very per-project basis. It would be nice to be able to bolt design-rule checkers together using a palette of existing components. Again, it seems that one should want a palette of components to help build up design rule checkers and completely different palette of components to build up actions. I would expect to use different “syntaxes” for each concern and would expect to use IDE layers to deal with each kind of issue separately then let the IDE automagically stitch them together. This is just another way of saying “I would like to use a different language (SCN in my words) to deal with each kind of issue”. Would I use text-based SCNs exclusively? No. But, for text-based SCNs, I would use Ohm-JS and for diagrammatic SCNs I would start by using draw.io. Both kinds of syntaxes are “easy” now, so there is no reason not to build project-specific SCNs. We have been indoctrinated to believe that “one language to rule them all” GPLs is the way to go. I don’t agree. duplicated in https://publish.obsidian.md/programmingsimplicity/2023-05-31… |
| 7 comments | |
|
|
Paul Tarvydas
2023-05-28 07:14 #
Software Engineers do not write code. Implementors (coders) write code. Engineers think (deeply) about what code needs to be written, and, what trade-offs need to be made to simply make the system work. Production Engineers think about making trade-offs so that the system is “efficient” along one or more dimensions (speed, space, cost, etc.), but, only after the initial system is working and shown to satisfy end-users’ needs. Current popular programming languages, like Rust, Haskell, Python, etc., conflate all of these issues together, thus, making the code more difficult to design. Conflating issues together like this has a name: “cottage industry”. Then, there’s Software Architecture, Maintenance, Testing, Q/A, Security, etc., etc. The above pattern is visible in other, older professions, such as building construction. Software might re-use these ideas and re-purpose them for creating electronic machines. Note, too, that more-established professions use diagrams to augment the use of written words when communicating designs (blueprints, schematics, molecular diagrams, etc.). Note, too, that more-established professions use elements that are completely isolated and decoupled from one another. This assumption (of inherent non-coupling) is violated by most popular programming languages. |
| 5 comments | |
|
|
Jason Morris
2023-05-24 13:57 #
I am going to need to come up with a more robust way to allow my users to edit legislative text in a way that is user friendly, and forces them to stick to a predefined data structure. I'm wondering if anyone has tried to use tools like slate.js or ProseMirror for that sort of thing, or have other suggestions. It's legislation, so I want the editing environment to be as text-like as I can manage. |
| 7 comments | |
|
|
Paul Tarvydas
2023-05-24 05:10 #
1. Are games more robust than other kinds of end-user software? Why? 2. Are games in 2023 more robust than games in 1980? Why? |
| 12 comments | |
|
|
Eli Mellen
2023-05-13 03:55 #
It isn’t pitched as a note taking app, but around work I see tons of teams using mural and miro as communal note taking surfaces. To the extent that a lot of projects are almost wholly documented in some sprawling mural |
|
|
Josh Cho
2023-05-13 02:58 #
I don't want to make something that already exists :) |
|
|
Josh Cho
2023-05-13 02:58 #
I have been creating a graph-based notetaking app; I am curious about the current landscape. I see Roam/Obsidian/Logseq sort of in the same category (with Obsidian Canvas as a feature with a lot of potential), and Tana (which I just learned about) goes one step further by nodifying more things. Are there any other killer features/products in this space? |
| 16 comments | |
|
|
Peter Saxton
2023-04-28 11:05 #
I've just asked this question "Why is bash a popular scripting language" to the wider internet https://news.ycombinator.com/item?id=35744867 I'm interested what do we think a futuristic shell environment looks like. is it a notebook replacing a shell, a different language i.e. more functional? or does a simple text script always exist |
| 14 comments | |
|
|
Mariano Guerra
2023-04-27 12:21 #
Is there a more modern version of "All the Widgets - 1990" Grouping UI components by "type" and showing examples? |
| 15 comments | |
|
|
Konrad Hinsen
2023-04-22 06:11 #
One of my recent discoveries is Permacomputing (I had encountered the term before, but never looked at it closely before). And I am wondering if anyone here has explored it more than I did, and if anyone has a view on how it might matter for the future of coding. I suspect that @Kartik Agaram is aware of this because some of his projects are cited as "adjacent". At first sight, the principles and overall objectives of permacomputing resonate with me, but I see a lot of theory and little practice. While I can see how such technology could be valuable in a different universe, which may of course be tomorrow's reality, my impression is that in the real world of today, permacomputing is nerd fiction. |
| 13 comments | |
|
|
Kartik Agaram
2023-04-16 19:28 #
Befunge, but readable https://github.com/m-ender/hexagony made the rounds of the internet yesterday, and caused me to swap in an old interest of mine that I've flailed ineffectually at in the past (e.g. https://twitter.com/akkartik/status/1238349948074070017): a way to display a program that makes its large-scale structure really obvious (rather than obfuscating it as Befunge does). One problem I have with Befunge (not the one you're thinking of, ha) and other fungeoids [1] is that you have a bunch of static information about a program visible in 2D on screen, but a key piece -- the stack -- is invisible. The question I keep returning to is how one might go about making the stack (or any other run-time state used by the program) visible without just bolting it on on the side. This time around, I got hooked on the following metaphor. Imagine a spaceship that contains some data, sets out on a voyage across an infinite 2D plane, and performs various operations depending on the objects it collides with. Example 1: The space ship contains a row of boxes. Colliding with a number pushes a box on to the nose, colliding with an operator operates on the 1 or 2 front-most boxes in the front. This is a way to display a stack, but a stack in isolation doesn't seem to scale well to larger programs. Example 2: The spaceship contains a number. Colliding with the BF-inspired primitives + and - [2] causes the number to be incremented and decremented, respectively. Now build addition out of it. Zooming into a number n shows it to be a loop of n iterations. When the spaceship collides with n it loops through n times, and the number inside it has n added to it. At a high zoom, you see the spaceship loop n times before exiting the "solar system". At a low zoom you see the spaceship exit instantaneously with n added to its value. Now you can imagine a reduce operation as a series of solar systems that the spaceship visits one by one. Example 3: The spaceship contains a binary heap to insert and delete elements from depending on objects it collides with. Zooming into any single collision reveals the tree structure to be the "space" that a smaller spaceship containing a single number bounces among. Two properties that seem important from these examples: • A hierarchical nature where space and spaceship are duals, and zooming in and out causes them to turn into each other. • Rendering the state of a spaceship needs to be extensible[3]. We need to leave Befunge's ASCII behind. At the largest scale, state machines feel like a really powerful way to represent the state within a spaceship. I often find them to be the outermost architecture of a large program. But to actually find the state machine I have to flail around for a long time. If we could use some visual paradigm at the largest scales but zoom into text as needed, programs might be much more comprehensible. [1] https://esolangs.org/wiki/Fungeoid [2] https://en.wikipedia.org/wiki/Brainfuck#Language_design [3] Like in my old Pong demo: https://handmade.network/snippet/1561 |
| 1 comments | |
|
|
Eli Mellen
2023-04-14 13:17 #
Anyone planning to read anything interesting and future of code adjacent this weekend? |
| 13 comments | |
|
|
Eli Mellen
2023-04-12 15:50 #
I’ll be leaning a discussion at my work about Elephant 2000 soon, and found this very valuable context to help ground the paper in some common, yet not clearly defined terms. Anyone have thoughts on Elephant 2000? |
| 10 comments | |
|
|
Nilesh Trivedi
2023-04-11 06:32 #
I've been thinking: We might need new languages for describing workflows that involve both humans and bots. Something much nicer than BPMN (which is XML-based): https://twitter.com/nileshtrivedi/status/1645779203210764289 |
| 6 comments | |
|
|
Paul Tarvydas
2023-04-11 01:58 #
Brooks said in the Mythical Man Month. Fail. Fail again. Succeed. You want to find a way to fail-fast the first two times. Using type-checked, bloatware languages ain’t the way to fail-fast. |
| 8 comments | |
|
|
Josh Justice
2023-04-10 05:44 #
Has anyone read Christopher Alexander’s The Timeless Way of Building in light of future of code? He’s the literal architect whose concept of patterns inspired the software patterns movement. In practice, Java enterprise software patterns are a lot of the past-of-code that we want to get away from. I’ve read that Alexander thought that community missed the point, and from Timeless Way I believe it. From the first chapter he gets into the concept that people should be able to build their own buildings, that it doesn’t take extensive planning, and that it resonates with something very natural within us and within the world. I don’t want to say more as I really think you need to read it in context for it to sink in; but I’d recommend picking up a copy. |
| 10 comments | |
|
|
Adriaan Leijnse
2023-04-04 08:39 #
I've been thinking about how the state of a running program could be modeled as the definition of a program changing over time. This seems closely related to "image" based programming systems, right? Does anyone have thoughts or reading related to this? (I got there thinking about the branchable/forkable database trend which tries to tie program version to state version.) |
| 13 comments | |
|
|
Ivan Reese
2023-03-28 15:18 #
Did you see what he said? Did you hear? Listen well! Take it to bed with you. Take it out of sight. Dream of it. ../administrivia/1680041884.022849.html |
|
|
Joakim Ahnfelt-Rønne
2023-03-28 02:04 #
Object capabilities represent a shift in the way we think about access control and security in software systems. Rather than relying on traditional user-based or role-based access control mechanisms, object capabilities grant access based on the specific capabilities an object possesses. Object capabilities are first class and can be narrowed down to arbitrary granularity by the programmer. • What are the implications of object capabilities for the design and architecture of software systems? How do they impact the modularity, flexibility, and scalability of these systems, and how do they influence our understanding of software architecture more generally? • How can we best leverage object capabilities to promote the development of more secure and resilient software systems? What are the potential pitfalls and challenges associated with this approach, and how can we address them? • How do object capabilities relate to broader philosophical debates about the nature of objects and their properties? Do these capabilities represent a fundamentally new way of thinking about the relationship between objects and their properties, or are they simply a new instantiation of existing concepts? |
| 24 comments | |
|
|
Ibro C.
2023-03-27 07:32 #
Has anyone tried to square “computing is a metamedium” (able to simulate all other mediums) with “medium is the message” school? I can think of a number of places where existing mediums can’t be emulated by a computer. But curious where people might say that’s an inherent limit vs a stage of expression computers have not yet reached (I think probably a mix of both). Is thinking there’s a limit “bad” if you are interested in the Future of Coding or does it help in some way with maximizing on strengths? |
| 10 comments | |
|
|
Jarno Montonen
2023-03-27 00:30 #
On the heels of the "LLMs and the future of programming" discussion (1679642239.661619.html, 1679892669.316079.html), I'd like to start a more concentrated discussion around their effect on Future of Coding projects. There was already some sentiment that LLMs are going to kill FoC projects. Some yes, but certainly not all. So what kind of FoC projects LLMs will not kill? |
| 4 comments | |
|
|
Nick Smith
2023-03-26 21:51 #
Here's my perspective on LLMs and the future of programming. I don't believe that the introduction of LLMs that can write code is going to obviate programming. And I don't believe that it is now pointless to develop new programming languages. Instead, I think LLMs are going to make programming and FoC research better, by automating one of the least interesting parts of programming: fiddling with the minutiae of syntax, language constructs, and libraries. I think programmers will still have plenty of work to do. The profession is not doomed. But to justify this, we have to take a step back and consider all of the activities involved in programming. Firstly, what is a "program"? A program is nothing more than: • A formal specification of the behaviour of an interactive system • ...that computer hardware can execute (after translating it into machine code). To emphasise this, I will use the term "formal spec" in place of "program" for the remainder of this discussion. GPT-4 can understand formal specs, and also everyday English. Thus, if we can describe the functionality of a system in everyday English, GPT-4 can (attempt to) translate it into a formal spec. But writing the formal spec is just one activity of programming. Altogether, programming (or perhaps "software development") involves several activities: 1. Determining what functionality the system being developed "should" have. This is done either by talking with relevant stakeholders (e.g. the future users), or by directly observing deficiencies with their current practices. 2. Expressing that functionality as a formal specification, i.e. "coding". 3. Verifying that the specification correctly implements all of the functionality of step 1. This includes practices such as reading and reviewing the specification, as well as testing the software. 4. Validating that the implemented functionality addresses the stakeholder's problems. 5. Repeating the first 4 steps until the stakeholders are satisfied with what has been developed. Here's my hypothesis: In the next 10 years, LLMs might radically reduce the amount of work required for step 2, but only step 2. Steps 1 and 4 are very human-centered, and thus can't be automated away — at least until we are at the point where we have an omnipresent AGI that observes all human practices and automatically develops solutions to improve them. Similarly, step 3 will not be automated any time soon, because: • The plain English descriptions that we give to LLMs will often be ambiguous, underspecified, and maybe even inconsistent. Thus the LLMs will have to make educated guesses at what we mean. (Even if they are able to ask clarifying questions, there will always be some choices that are automatically made for us.) • LLMs will occasionally get confused or misinterpret what we say, even if we are clear and careful. We will not have infallible AIs any time soon. So let's assume that LLMs can automate most of step 2. What does this mean for those of us developing tools and technologies to improve programming? Is our work obsolete now? Will the AI researchers and AI startups be taking the reigns? I don't think so! There is still a huge opportunity to develop tools that address step 3, at the very least. (Steps 1 and 4 are harder to address with technology.) In particular, step 3 involves the task of reading source code. When an LLM spits out 1000 lines of JavaScript, how do you know that the code implements the functionality that you wanted? You have to verify that it does, and for large programs, that will be an enormous amount of work! As we all know, no amount of testing can prove that a program is correct. Thus, we cannot verify AI-generated programs just by using them. Maybe the program has a subtle bug, such as a buffer overflow, that might only be triggered 5 years after the program is deployed. Or less insidiously: maybe the program just doesn't handle certain edge-cases in the way you would like it to. Either way, a human should probably read through the entire program with a keen eye, to check that all of the logic makes sense. There's clearly an opportunity for FoC researchers here: we can make languages and tools that make reading and verifying the behaviour of programs easier! Some examples: • We can design programming languages that are vastly easier to read than traditional languages. How might we do that? Well, "higher-level" languages are likely easier to read, since they are likely to be more concise and focus on the end-user functionality. So work on higher-level programming models will continue to be valuable. To complement this, we can (and IMO, we should) invent new syntaxes that are closer to plain English, such that the specifications that LLMs produce are accessible to a wider audience. • We can design programming languages where it is harder to write erroneous programs. For example, we can design programming languages that cannot crash or hang (i.e. Turing-incomplete languages), but which are still general-purpose. This reduces the kinds of errors that a human needs to consider as they verify a program. • We can design better tools for reading and interrogating source code. (For example, better IDE support for navigating and understanding the structure of large codebases.) • We can design better tools for exploring the space of behaviours of a running program. (Perhaps similar to the tools discussed in Bret Victor's "Ladder of Abstraction" essay.) Overall, I think the future is bright! I'm going to continue my own PL research project (a very high-level language) with as much vigor as ever. |
| 17 comments | |
|
|
William Taysom
2023-03-24 00:17 #
Friends, I don't know what to make of developments in AI these days. Having worked on dialog systems in the aughts and having loosely followed developments since (I recall preparing a talk around 2010 which left me pretty enthusiastic about ML applications in contrast to the App-and-Facebookification of "tech" — that was on time horizon of a few years, which ended up being a decade plus), every day I check in on Twitter I see more exciting stuff than I can possibly process. I was just writing someone yesterday about how in six months time, we'll have LLMs acting as the front-end to knowledge bases and rigorous computational systems, and then we'll need to focus on getting the human, AI, and formal model all on the same page. As has already been noted in #linking-together today, my estimate was off by roughly six months. Consider, "I've developed a lot of plugin systems, and the OpenAI ChatGPT plugin interface might be the damn craziest and most impressive approach I've ever seen in computing in my entire life. For those who aren't aware: you write an OpenAPI manifest for your API, use human language descriptions for everything, and that's it. You let the model figure out how to auth, chain calls, process data in between, format it for viewing, etc. There's absolutely zero glue code" https://twitter.com/mitchellh/status/1638967450510458882. If you can tolerate his prose, Stephen Wolfram has a long post https://writings.stephenwolfram.com/2023/03/chatgpt-gets-its…. The "Wolfram Language as the Language for Human-AI Collaboration" section is most relevant to Future of Coding. What do these developments mean for the Future of Coding? And how are you all holding up? Me? I can hardly process what's happening, let alone what to do about it. |
| 59 comments | |
|
|
Mariano Guerra
2023-03-21 02:14 #
Is there a "Grammar of Data Schemas/Constraints" similar to "Grammar of Graphics"? Any schema definition language you find interesting? |
| 1 comments | |
|
|
Mariano Guerra
2023-03-18 05:11 #
If you are near London you can think together in person! https://twitter.com/Mappletons/status/1637042911228440580 |
|
|
Ivan Lugo
2023-03-16 07:05 #
This is an incredibly thinky group of folks. I’m wondering how, if at all, this little community has been using these LLMs and advanced chat bots. People are playing Pokemon in a text/CLI form just by asking “let’s play pokemon but with text and skip all the boring parts”*. I have to conclude that a number of you folks have made some crazy strides in the work you’ve been doing or how you’ve been refining your ideas with these tools. |
| 45 comments | |
|
|
Jared Forsyth
2023-03-06 10:54 #
Do y'all know of any editors with undo/redo behavior that's more interesting/granular than just scrubbing through all of the edits you've done to a file in order? I often find my self wanting "undo the last change to this function" :thinking_face: |
| 20 comments | |
|
|
Paul Tarvydas
2023-03-03 11:50 #
Multi-single-tasking: Brainstorming, half-baked... I would have ignored Ceptre in the past. It claims to be a language for writing games. The very idea makes me yawn. But, one of the guys at the Torlisp monthly meetup is deeply into robotics and Scheme and another guy, in the film industry, uses Racket for hobbying in game programming. My own interest is in concurrency and simplicity and compiler-writing. These fields are all related. Watching the 2015 Strangeloop presentation about Ceptre piqued my interest. Ceptre is logic programming, but with a twist - it has a built-in notion of explicit ordering. I thought that I could knock off a better game language using my diagrams of state machines. I continued to learn about Ceptre. Aside: Ohm-JS has built-in explicit ordering and is “not” context-free. I have to wonder if Ceptre is to generalized formalism as PEG (Ohm-JS) is to context-free grammar formalisms. Dunno yet. FYI, I watched the Ceptre talk. I then read the paper and now am reading the thesis. And in the background (foreground?) I am trying to convert Dungeon Crawler (.ceptre) into PROLOG. I think that Ceptre can be simplified down to a small handful of primitives which are easy to express in PROLOG or Lisp or JS or ..., but they are not the first thing that you think of when programming PROLOG. From there, of course, I would expect to generate code for Dungeon Crawler in Lisp and JS and Python and … In the back of my mind is the question “Is This Steam Engine Time?” (Paul Morrison). Are we seeing a shift away from single-threaded languages (Python, JS, Rust, Haskell, lambda calculus, etc.) to ???. Certainly, hardware in 2022++ is drastically different from hardware in 1950 and we should be finding better ways to cope with this New Reality (“The Great Reset in Computing”)… FYI: The drastic difference in hardware is the reality that we now have cheap CPUs and cheap memory. Both of these notions were completely unimaginable in 1950. Instead of crushing our hardware with bloatware like Linux, we can simply throw rPIs at a problem, each running single-threaded programs. There is no need to fake out multitasking anymore. Multicore is just a clumsy way to bridge across the two drastic realities, i.e. to force-fit 1 CPU programming languages onto many-CPU-programming. In fact, we shouldn’t even call CPUs CPUs anymore, since there’s nothing Central about them. Early adopters of 1950s computing built games. Maybe early adopters of 2022++ computing will build new kinds of games with 1,000s of PUs, for example 1 processor for each player and for each NPC. Ceptre: [https://www.youtube.com/watch?v=bFeJZRdhKc ../linking-together/1674614304.225439.html Call/Return 1.675094.html… I have not investigated this, but it, too, appears to be barking up the same tree: https://www.youtube.com/watch?v=5YjsSDDWFDY&list=PLcGKfG… FBP (Flow Based Programming) https://jpaulm.github.io/fbp/ |
| 10 comments | |
|
|
Niall McCormack
2023-03-01 13:03 #
What's the general consensus on node based scripting? I'm intrigued by Unreal's Blueprint node based scripting tools - they seem easy to use, but if you want to do anything complex then (for me) it becomes very messy very quickly. However with the general move in the past 10 years or so to more functional programming and serverless etc then perhaps it makes sense. Small components that can be wired together visually feels easy, or right? Darklang is another example with extrapolates the complexities of the underlying system allowing you to just write some pseudo node based (at least when I last looked at it) components that are easily wired up together. I'm an iOS engineer by trade, and it feels that something like Darklang / node based coding could end up matching nicely with SwiftUI's declarative syntax for UI. |
| 11 comments | |
|
|
Jason Morris
2023-02-27 22:11 #
What do you do to motivate yourself to update documentation? I have so much of it that it is now a significant undertaking to keep it up to date with the tool, and I am losing interest. I'm trying to figure out whether I should just tag most of it as out-of-date and come back to it later when there are enough users to justify it... |
| 5 comments | |
|
|
Jarno Montonen
2023-02-23 04:32 #
Another thing I'd be interested is solutions for bidirectional text transformations (for source code). Ideally a system in which you could define transformations once, and get both AtoB and BtoA transformers |
| 2 comments | |
|
|
Jarno Montonen
2023-02-22 06:43 #
I'm in need of two solutions: 1. Generating a language model out of ANTLR grammar. Preferably in C#. 2. Printing an AST to text according to an ANTLR grammar. I found this https://github.com/miho/VMF-Text, but anything else? |
| 2 comments | |
|
|
Eli Mellen
2023-02-22 06:25 #
Does anyone have future of code flavored papers by folks who aren’t white dudes? I’ve been pulling together a reading list for an engineering reading group at work, and would like to make sure it’s at least a 50/50 split. |
| 2 comments | |
|
|
Oleksandr Kryvonos
2023-02-21 02:20 #
I am not sure but this might be a thing - in order to reduce scrolling through files I try to keep each function in respective separate file (so I have over hundred of files so far) and I wrote a simple code that copies the content of the function into the body of the html page and adds some template text like <script> tags etc. I try to find the most minimal set of tools in the motto of bicycle for mind - in other words - you don’t need a complex solution like an aircraft carrier but rather a bicycle. |
| 9 comments | |
|
|
Ibro C.
2023-02-20 04:41 #
I’m curious “where” people think of visual in visual programming being. For context, I spend a lot of time in tools like Houdini, Solidworks, Cavalry, and After Effects. Some of them have more access to computation than others, but the biggest difference between those and Processing or threejs is a large “standard library” of functions. On the other hand, building a website with live feedback or scripting in a REPL seem like a very different experience from just writing the same code in notepad. I wonder if visual programming is all just “debug views” rather than the specific presence of a GUI. And if so, what does that mean for generalized visual languages or environments? |
| 15 comments | |
|
|
Kalvin
2023-02-15 17:04 #
Does anybody have any examples of version controlled projects that use visual programming? |
| 14 comments | |
|
|
Jim Meyer
2023-02-09 03:34 #
Code is a weird medium. It can act directly upon the world at scale. The only other "things" that can do that are the fundamental forces of the universe. Code is essentially a kind of Jinn/Genie: Agency in a bottle. Jinn also translates to "beings that are concealed from the senses" [1]. Invisible beings that control our world and battle for our attention. Sounds about right :grin: |
| 4 comments | |
|
|
Mariano Guerra
2023-02-03 07:47 #
What are some great ways to present code in a book/docs? Especially when the code is growing, being modified, etc.? https://twitter.com/dubroy/status/1621533688159768577 |
| 5 comments | |
|
|
Steve Dekorte
2023-02-01 12:38 #
Should a good tool/framework/language not only "make easy things easy, and hard things possible", but also (generally) make patterns effortless, and anti-patterns painful? |
| 20 comments | |
|
|
Ivan Reese
2023-01-28 13:43 #
^ The exchange in that thread is why @Mariano Guerra is the GOAT |
|
|
Jonas
2023-01-28 10:51 #
Quick question: is there an RSS feed for the Future of Coding newsletter? |
| 5 comments | |
|
|
Nick Arner
2023-01-24 16:44 #
Does anyone have any resources they’d recommend for learning about Rust/WASM? |
| 6 comments | |
|
|
Paul Tarvydas
2023-01-22 06:06 #
# Summary 2022 For me 2022 was: 1. 0D 2. transpiler pipelines Explanations below. There is nothing “new” here. I believe that our crop of programming languages subtly discourages certain kinds of thoughts. You can do these things with our programming languages, but, you don’t bother. [I wrote this on Jan 1/2023. Then I promptly got sick and found new ways to procrastinate. I will gladly remove this if it is inappropriate or too long...] # TL;DR ## 0D • 0D is part of traditional parallelism (zero-dependency, total decoupling) • breaking 0D away from parallelism enables other uses • 0D uses FIFOs, whereas functions use LIFOs (LIFOs are used by most modern programming languages, Python, Rust, etc. and stifle possible solutions) ## Transpiler Pipelines • “skip over” uninteresting bits of syntax, whereas CFG requires full language specification • leads to a different class of tools -> parser used for “quickie” matches instead of for building compilers ; different way of using parser DSLs ; like mathematical manipulation of notation • “skipping over” bits of syntax allows syntactic composition ; syntactic composition enables pipelines ; # 0D 0D is a short-hand for the phrase zero dependency. Total decoupling. Programmers already know how to write 0D code, but, they tangle this simple concept up with other concepts and call the result “parallelism”. At a very, very basic level, you can achieve 0D by using FIFOs instead of LIFOs (queues vs stacks). LIFOs - callstacks - are good for expressing synchronous code. LIFOs are less-good for expressing asynchronous code. Programmers often conflate nested, recursive functions with the notion of pipelines. If a component sends itself a message, the message is queued up in FIFO order and there is a “delay” before the message is processed, whereas if a component recursively calls itself, the function parameters are pushed onto a stack and the processing happens immediately, in LIFO order. This subtle difference in processing sequence manifests itself in design differences. For example, in electronics - where all components are asynchronous by default - you often see the use of “negative feedback”, say in Op-Amp designs. You rarely see this technique used in software design. In electronics, negative feedback is used by components to self-regulate, whereas in software, recursion is used as a form of divide and conquer. Feedback loops make it possible to be explicit about software design, whereas recursion hides the key element - the callstack - of the design. EEs had this issue sussed out, before the advent of the “everything must be synchronized” mentality. All components in an electronic circuit are asynchronous by default. Synchrony is judiciously, explicitly designed-in through the use of protocols. Synchrony is not designed-in everywhere by default and is explicitly designed in on an as needed basis. There is a reason - a subtle reason - why it is easy to draw diagrams of computer networks and not-so-easy to draw diagrams of synchronous code. In EE designs, concurrency is so cheap that you can’t help but use it. In software, concurrency implies difficulty and designers end up avoiding concurrency in their designs. This subtle difference has a trickle-down effect to end-user code. When it is difficult to draw diagrams of programs and to snap components together, programmers tend not to provide such features to end-users. Or, when they provide such features, they implement such features under duress. If DaS and snappable components were abundantly available, such features would naturally leak through to end-user apps. 0D can be implemented a lot more efficiently than by using operating system processes and IPCs. Most modern programming languages support closures (anonymous functions) and make it easy to build queue data structures. Stick one queue at the front of a closure - the “input queue” - and one queue at the tail of a closure - the “output queue” - and, you get 0D. Then, you need to write a wrapper component that routes “messages” from the output queue of one closure to the input queue of another closure. Can this concept be generalized? This ain’t rocket science. When you build 0D software components, does the order-of-operation of components matter? Nope. Can a 0D component create more than one result during its operation? Yep. Can a 0D component directly refer to another 0D component? Nope. The best you can do is to compose networks of 0D components inside of routing wrappers. # Transpiler Pipelines It would be nice to build up solutions using pipelines of many little solutions and syntaxes made expressly for those solutions. What do you need to be able to do this? 1) You need to be able to write grammars that are very, very small and that allow you to”ignore” bits of syntax that don’t pertain to a problem, e.g. kind-of like REGEX, but, better. 2) Total isolation of building blocks. ## Very Small Grammars That Ignore Uninteresting Items Ohm-JS - a derivative of PEG (Parsing Expression Grammars) - makes it possible to write grammars that skip over uninteresting bits of text. For example, if you want to write a quickie parser for C code, you might want to say: ... function-name (...) {...} In Ohm-JS, you can say this, whereas in a CFG-based parser generator you need to over-specify all of the niggly bits of C syntax. In Ohm-JS, this results in a few minutes of work and only a few lines of code. The Ohm-Editor assists in developing the micro-grammar. In YACC and CFG-based approaches, though, you’re looking at a gargantuan job (days, weeks, months, ...) and you simply don’t bother to write such a quickie parser. You either don’t bother with the whole idea, or you use something like REGEX which fails on a number of edge-cases for this kind of thing. REGEX can’t search recursively for matching brackets, Ohm-JS can. Using REGEX, you might get away with a partial solution, or, the project might grow larger as you hit unexpected speed bumps. You either persevere or you just give up. For the record, the grammar plus the accompanying code fabricator specification for the above simple example are shown in the appendix. ### DaS Comes For Free When you can build totally isolated building blocks, you can draw sensible diagrams of how the building blocks should be snapped together to solve a problem. Later, you can steal (cut/copy/paste) chunks of previous solutions and use them as building blocks for new problems. DaS: Diagrams as Syntax. DaS is not diagrams as an Art Form. DaS is diagrams as programming languages. For example, instead of writing {...}, you draw a rectangle. Programming languages were created by culling the English language and by choosing only the words and phrases that could be compiled to executable code. Can we cull diagrams in the same way to invent new programming languages? EE’s have done this and they call the resulting diagrams “schematics”. Building construction engineers have done this and call the resulting diagrams “blueprints”. ## Don’t We Already Use Building Blocks? “Code Libraries” look like building blocks, but, contain subtle bits of coupling that discourage building-block-iness. For example, the very common idiom of a function call f(x) introduces at least 3 kinds of coupling: 1. The name f is hard-wired into the caller’s code. The calling code cannot be cut/copy/pasted into some other solution without also dragging in the called code, or, by futzing with the source code. 2. The function call f(x) waits for the callee to return a value. This is also known as blocking. Function call notation works fine on paper, where functions can be evaluated instantaneously. It’s different when you map function call syntax onto hardware that has propagation delays wherein functions take finite amounts of time to “run”. This subtle difference in behaviour leads to hidden gotchas. A glaring example of the impact of such a difference can be seen in the Mars Pathfinder disaster[^pathfinder]. 3. The function return v = f(x) hard-wires a routing decision into the callee’s code. The callee must direct its response back to the caller. This is called “returning a value”. Again, this doesn’t look like a problem when you just want to build fancier calculators, but, this hard-wired routing decision discourages simple solutions to non-calculator problems, like machine control. [^pathfinder]: https://www.rapitasystems.com/blog/what-really-happened-soft… When you don’t have complete isolation, you don’t have building blocks. Imagine a LEGO® set where all the pieces are joined together with a single, long sewing thread glued to each LEGO® block. Or, you have two real-world objects, e.g. one apple and one orange. You cut the apple in half. What happens to the orange? As humans, we are used to the idea that objects are completely isolated. Programs don’t work that way. We have to stop and think hard when writing programs. |
| 31 comments | |
|
|
Steve Dekorte
2023-01-20 11:08 #
"Are there any languages with transactions as a first-class concept?" https://www.reddit.com/r/ProgrammingLanguages/comments/10gyl… Would be interested to hear the thoughts of folks here on this thread. |
| 10 comments | |
|
|
Konrad Hinsen
2023-01-06 02:55 #
Inspired by ../linking-together/1672756060.085649.html and ../linking-together/1672816690.782479.html, plus my daily work with a Smalltalk system, I started thinking about high-level architectures of information processing systems. Spreadsheets are two-layer systems, with a data grid on top and a code grid below it. That's a good architecture for dealing with heterogeneous grid-shaped data and shallow computation. For homogeneous grid-shaped data (arrays, data frames) you'd prefer to compute with the grid as a whole, and for complex/deep computation, you want a more code-centric architecture. You can of course prepare the complex code in some other architecture and just call it from a spreadsheet. High-level architectures can be composed. Dataflow graphs, of which Data Rabbit is an amazing implementation, have nodes containing code and data flowing through the edges. They can deal with irregularly shaped data, even messy data, but, like spreadsheets, they are limited to shallow computation. A Smalltalk image is a code database built on top of a an unstructured "object lake". It's great for dealing with complex code, but has no high-level structure for data. You can, and have to, roll your own. From this point of view, a Smalltalk image is the perfect complement to a spreadsheet or a data flow graph, having opposite strengths and weaknesses. So... are they more such high-level structures that have proven useful in practice? Is there just a small set whose elements can be combined, or should we expect a large number of unrelated architectures being good for specific purposes? Note that I am thinking about "good for", not "applicable to". All Turing-complete systems are equivalent in principle, but that doesn't make them good tools for all purposes. My question is ultimately one of human-computer interaction. |
| 10 comments | |
|
|
Nick Smith
2022-12-30 23:20 #
Traditional models of communication between devices, processes, and threads include message-passing, remote procedure calls, and shared memory. Here's a model I haven't seen before: shared game-playing. How it would work: • The rules for a "game" of some kind are expressed as a code library... or whatever representation works best. • A set of "players" (processes or threads) express interest in playing the game with each other. (somehow...) • The players communicate with each other by interacting with the game (in accordance with its rules), and receive information about each other's actions by observing how the game state has changed. The "game" could be an actual game like chess or Factorio (implemented via peer-to-peer communication), or it could be a standardized protocol like HTTP, FTP, or (most commonly) it could be an application-specific protocol that would normally be implemented via message-passing or RPC. Imagine if this were the only model of communication that a programming language exposes. What if it were the "building block" of communication — the only way to build concurrent systems? I think it's an intriguing thought :thinking_face:. I'm surprised I haven't heard this model proposed before. (This post was inspired by Syndicate, which is an actor-based PL that eschews message-passing and RPC for the idea of a "data-space" that actors use to exchange information. But unlike my proposal above, Syndicate's data-spaces don't contain rules, and thus cannot be used to model video games or communication protocols.) |
| 39 comments | |
|
|
Nilesh Trivedi
2022-12-29 04:59 #
It seems to me that the whole construct of functions as primitives that take arguments and produce results leads to boilerplate and duplication because it needlessly privileges arguments as "independent variables". I'll use an example to elucidate: Take a rectangle of base b and height h. It's common to think of these as "independent" variables and define quantities like the following as "dependent": • perimeter(b, h) => 2*(b+h) • area(b, h) => b*h • diagonal(b, h) => sqrt(b^2+h^2) But if I were to ask, what are the base and height of a rectangle whose area is a and diagonal is d, our programming languages have no tooling to do this (except the symbolic manipulation libraries for computer algebra). All the required information is there but we have privileged b and h over area and diagonal and thus, we now need to figure out the formula for side lengths and program it as the function sides(a, d) I should be able to describe a structure, and auto-generate all possible functions (including for currying and partial applications, and while we are at it, all the partial derivatives with respect to each other) so that i can just declare what is known and what I want to calculate. A rectangle can then be represented with any set of variables that make everything else determinable. I should get access to all possible constructors like new Rectangle(area: a, diagonal: d). And I want to see this be available for all programming tasks, not just algebra/math. For creating a graph, is the constructor new Graph(Nodes[], Edges[]) really the privileged one? Why not build languages in a way that I automatically get the constructor new Graph(AdjacencyMatrix) and the instance methods graph.getNodes() and graph.getEdges()? |
| 15 comments | |
|
|
Paul Tarvydas
2022-12-23 06:51 #
Question: How did REGEX jaibreak from Compiler Technology and become popular with non-compilerists? First guess: (1) grep, sed, awk, etc. broke the ice, and, (2) perl brought REGEX into the mainstream. I guess that perl solved a latent problem, which made it very popular. What was that problem? |
| 8 comments | |
|
|
Alex Bender
2022-12-23 04:20 #
Hello all! Once I saw a great tool in here, to test react components and build a state tree or something like that. Looks like it was here but I can not recall the name so would be really pleased if someone could point me to that tool. Thanks |
| 5 comments | |
|
|
Jarno Montonen
2022-12-19 23:36 #
Any opinions on should the editors in which you edit a structure (AST) rather than text be called Structure Editors, Structured Editors, Structural Editors (just saw @Peter Saxton use this term in his post), or Projectional Editors? Are all of these synonyms or are they just related in specific ways? Personally I like Structure Editor the best, as opposed to Text Editor. Although Structured and Structural sound correct, I feel like they refer to the editor UI. Similar to how the terms graphical and visual are used. But a Structure editor could be either visual or textual, so having Structure Editor as the 'base term' would allow being more specific by saying Graphical Structure Editor or Textual Structure Editor. Also, even if technically a structure editor would always use a projection of the structure, I feel like it would be best to reserve the term Projectional Editor to editors that explicitly support multiple projections of the said structure. However, Projection(al) might be a bit foreign term to people not familiar with the topic, so I would rather just use Structure Editor 99% of the time. I feel like one of the barriers for more widespread usage of structure editors is that you have to explain people what they even are and it would certainly be easier to change this if the developer field could agree on the terminology :slightly_smiling_face:. Any thoughts? |
| 20 comments | |
|
|
Florian Schulz
2022-12-15 02:56 #
I have one broken arm and typing sucks even more now. What are good examples of programming environments that work great with touch and voice? I’ve also found dictation works so much better compared to five years ago now given AI tools, there must be something that is more convenient for single-handed use or let me rephrase: I wish I had built that tool one week ago. :muscle: |
| 10 comments | |
|
|
Jan Ruzicka
2022-12-10 14:28 #
Do computers make a qualitative difference compared to paper and a concentrated human mind? They certainly improve the speed at which we can perform certain mechanical tasks by automating them (e.g. calculations, simulations and rendering of their results, even some basic logical inference can be done automatically). So even though this all can be in principle performed manually, ain’t nobody got time for that :)) This is similar to how paper dramatically expands the working and long-term memory, hence augmenting mental capabilities. However, paper also expands qualitatively over mere speech by adding a second dimension for expression. This allows for not only planar, but also spatial objects to be represented trivially (they’re sometimes easier to represent than text). Also, it makes possible the use of maps and graphs, which are just impossible to imitate using just speech. Computers add a dimension for expression, namely time. One can create objects that change in time, and also dynamically change them while they’re changing. But this is where I’m not sure if it makes that much of a difference. In my opinion, there’s always a certain limit beyond which changing a dynamic object gets unbelievably difficult (the “walled-garden” or “programmer-didn’t-think-of-that” phenomenon). On paper, you might need to work with a static representation of a process, but you can manipulate it without restraints. Also from the same phenomenon, we get a limited compositionality/mobility of dynamic objects. This is not a problem with paper, where the mind is free to consider different mental and symbolic objects to interact. The last point might have something to do with the fact that whereas we know some threshold for literacy (at least limited to using paper and writing for personal thinking), and that is: 1. learn to read and write letters 2. learn to organize thoughts on paper 3. done (there’s always room for improvement, but this baseline still covers the qualitative advantages of paper) Compare that with “computing literacy” which not only doesn’t exist, but if it did, would be something like: 1. learn to use some basic programs and how programs work in general 2. learn to write basic procedural programs in some “nice” programming environment (= not complex systems, not parallel, but not necessarily in a procedural language; what the environment should look like is of concern to e.g. Jonathan Edwards) … so far so good, but when you hit the limit … 3. either wait for some programmer/company to expand the stuff you’re using, or … 4. learn to program in universal languages, on general-purpose platforms 5. rewrite the stuff you’re using, but somewhat better 6. done? (not really - your program is buggy / your program can’t interoperate with all the other stuff that’s out there which the old program could interoperate with / …) We know how unreal of a threshold numbers 4 and 5 are for the general public. If we instead restrict the threshold to 1 and 2, we don’t get the qualitative advantage of the computer. So the question is: If viewed as means to augment human intellect, do computers provide qualitative (not just quantitative) advantages over pen, paper and the human mind? |
| 16 comments | |
|
|
Jim Meyer
2022-12-05 03:34 #
Provenance of content will be a huge challenge due to recent advancements in AI/ML. My immediate thought was "but code is in Git etc. and we know the author", but that's all void if the actual author of the code was a tool like ChatGPT/Co-Pilot and the dev was just the one that pushed it. Maybe AI will be what brings about next-gen versioning systems where content provenance is managed at the AST node level during code authoring, and not just by whoever pushed the code after the fact. |
| 17 comments | |
|
|
Andreas S.
2022-12-04 03:19 #
Hello :wave: everyone, As you may have noticed but also @William Taysom showed in another channel, Open AI - Chat Gpt seems to generate a lot of buzz. https://twitter.com/rshoukhin/status/1598714847255855108 Looking at this I’m questioning myself if “framework” rewrites will be less common in the industry now? Will it have a deeper impact than this? Is this a development in the lines of Peter Novig’s - as we may program? https://vimeo.com/215418110 What are your thoughts :thought_balloon: on this? Thank you :pray: |
| 11 comments | |
|
|
William HS Angell
2022-12-04 01:16 #
Which programming languages will be easiest for (the current incarnation of transformer-style) AI to work with? Python is verbose - it seems like you want something that makes the most use of the window size. APL? Whitney-style C? |
| 3 comments | |
|
|
Christopher Shank
2022-11-30 22:16 #
What’s the relationship between domain-specific programing (i.e DSLs) and end-user programming? |
| 4 comments | |
|
|
Nicholas Yang
2022-11-26 13:00 #
Hey I wrote up a blog post on tooling for programming languages, basically tools like tree-sitter that help programming language implementors provide higher quality user experience. I’d love to see what people think of the post! It’s in draft but I’ll probably publish it soon. https://github.com/NicholasLYang/uptointerpretation/blob/mas… |
| 3 comments | |
|
|
Jim Meyer
2022-11-25 10:55 #
Are hyperlinks the biggest idea to arrive once we had computing? I mean in terms of impact on our lives. On our future. A piece of transformative UX design and engineering work that was done—without any chance of knowing how massive it would become. I think hyperlinks are bigger than the Internet. The Internet isn't the Internet without hyperlinks. Yes, hyperlinks don't work without a running internet, but the Internet isn't "the thing", it's "the thing that let us create the (many exciting) things". It's wild to think that once the idea of hyperlinks formed, the UX design that arose was the application of text color and an underline. With that, semantic color and an underline, we got: Hyperlinks as sharing. Hyperlinks as social currency. Hyperlinks as digital neural connections. Hyperlinks as the connective tissue of civilization. Hyperlinks as the most transformative tool in use by humans today? Or maybe, just maybe, cats had this planned out all along :grin: |
| 16 comments | |
|
|
Jim Meyer
2022-11-23 23:46 #
Vector-graphics used for design is stored in files and cloud databases, but that doesn't mean designers write text or SQL to interact with it. Code needs to be no different. It needs a UI. |
| 17 comments | |
|
|
John Voorhees
2022-11-18 09:57 #
I haven't seen this posted yet. I was at GitHub Universe last week and I saw a live demo of "Hey GitHub", a voice controlled interface that uses Copilot to author code. The first intention of this product is to help people with disabilities, including those suffering from Repetitive Stress Injuries: https://githubnext.com/projects/hey-github I'm building a VR coding app. We looked at voice to text input using Codex about a year ago. I think it's a very exciting Future of Code concept: https://www.youtube.com/watch?v=icHLoxOFerk |
| 1 comments | |
|
|
Andreas S.
2022-11-18 02:20 #
As I go slowly my way through the kernel syllabus, I find gems like this one: "The practice of software begins to resemble closely the practice of memoria and, specifically, the memory theatres of Camillo, which constitute memory as a public space; a kind of virtual architecture for an incomplete image of the world. Software begins to look like the closest medium to memory itself we have produced." https://www.kernel.community/en/learn/module-3/remember/#mem… What do you think? How do do you personally perceive Software as Memory? |
| 1 comments | |
|
|
mako yass
2022-11-01 14:02 #
The recent interview on Worse is Better mentioned that iOS restrictions on the use of JITs seem to be relaxing. I found this to be strategically significant so I brought it up with bytecode alliance (group promoting WASM standards). They seem to think it isn't going to happen. The change linked in the episode notes was in macos, and the requirements for distribution in iOS still seems to be dire. Dynamism is forbidden. You can write JITs for your iOS apps, but you can't distribute them unless they're only going to be run on a static input bundled with the app. https://bytecodealliance.zulipchat.com/#narrow/stream/206238… |
| 2 comments | |
|
|
Konrad Hinsen
2022-10-30 23:33 #
I'd claim that Smalltalk is mostly code-as-data and code-as-executable. Only methods (the leaves of the code tree) are manipulated as text in a typical Smalltalk system. And even those leaves are also accessible to code-as-data tools in modern Smalltalks (e.g. Squeak and Pharo). For example, I can rename slots (instance variables) across all methods of a class as a single operation. I can also search for all methods in the system that contain a specific literal, or send a specific message. Recent versions of Glamorous Toolkit (a layer on top of Pharo that completely replaces the UI) add refactoring tools that let me do system-wide find-and-replace using patterns in the AST. I find code-as-data-with-text-at-the-leaves a very nice mix of code representations. Text is great at fine granularity levels. It sucks for the big picture. |
| 10 comments | |
|
|
Jim Meyer
2022-10-30 00:07 #
99% of humans think of code as a medium that is too difficult. I don't think the medium is the problem. I think it's the way we've been asking end-users to interact with it: So far, 99% of human-to-code interactions have been code-as-text, an interaction paradigm with unforgiving syntax and symbolic mental models. Investments in interaction paradigms for code have almost exclusively focused on code-as-text and code-as-export, but there are other more end-user friendly ways of interacting with code that we can explore. Let's break down the interaction paradigms for code (tell me if I missed any!): • Code-as-text (massively explored): You type, the code editor helps you type. Examples: IDEs, Low-Code • Code-as-export (mostly explored): Code is treated as a secondary source of truth via one-way export flows from some vendor-specific data you're editing. The tool cannot manipulate or understand the code it just exported, and the interaction ends here. Examples: Vector-based UX design tools, No-Code • Code-as-programming-portals (moderately explored): @Maggie Appleton wrote a great breakdown of this at https://maggieappleton.com/programming-portals • Code-as-data (largely unexplored): Direct manipulation of code ASTs/code visualizations/code output. The tool responds to non-textual interaction from the user and reconciles their intent with a corresponding change in the underlying code-as-text storage. • Code-as-executable (largely unexplored): A code engine/runtime executes code-as-data changes that result from user interactions to give the user instant feedback, closing the feedback loop of the interaction. Related to live-coding, but where live-coding is tied to code-as-text, code-as-executable can respond to changes from code-as-text as well as code-as data. • Code-as-source-of-truth (massively explored): IDEs, version control systems. The primary interaction consists of reconciling your code interactions with those performed by others, e.g. through merging, pushes, conflict resolution. There's so much unexplored territory outside the traditional code-as-text and code-as-export interaction paradigms! Would love to know what you think and whether I've missed any :smile: |
| 5 comments | |
|
|
Jim Meyer
2022-10-26 23:45 #
Had a daydream of an alternative reality where 1% of VC funding that goes into no-code had to fund this community instead, no strings attached. Didn't get to the part of how that'd actually work given the messy nature of people, but sure would be an interesting situation :smile: Where's all the ambition, the sense of adventure, that drove funding in the 60s? A time where the mother of all demos was possible to achieve with a small team that thought outside the box. Have VCs, researchers and funders become disillusioned. Have marketing teams cried wolf too many times. Have people given up on solving the really hard problems at the core of code. Who's picking up the mantle from the Engelbarts and Victors? Who's willing to fund their work and have it become products that changes people's lives. |
| 19 comments | |
|
|
Nicholas Yang
2022-10-23 19:53 #
Does anybody know if there’s a parser generator like tree-sitter, i.e. produces a CST instead of an AST, but that can be used as a compiler frontend? Tree-sitter kinda can be, but it’s not the easiest |
| 7 comments | |
|
|
Breck Yunits
2022-10-22 09:20 #
Anyone know where I can find public domain SVG icons for use on our websites? |
| 3 comments | |
|
|
Jim Meyer
2022-10-16 04:39 #
Coding tools treat code as static structured text. UX design tools treat design as static vector-graphics with "noodles for swapping a 1000 static states" on top. Code is data that needs direct manipulation with instant feedback. That's what creative tools need to achieve. |
| 15 comments | |
|
|
Kartik Agaram
2022-10-14 21:26 #
One problem in the world today is that if you take a widely used program and add a warning to it in some situation, people get mad at you. No matter how useful the warning is, how insidious the situation it protects you against. The reason for this seems to be that not everyone who sees a warning is empowered to fix the underlying cause. You might use a library that does something warning-worthy. You can't change the library yourself to fix the warning. Question for live-program enthusiasts like @Jack Rusher[1][2]: I wonder how much this problem is caused by overusing batch-programming and an insufficiently expressive communication channel for warnings. I made up a wishlist at https://lobste.rs/s/vgnnjt/we_are_stuck_with_egrep_fgrep_unless_you#c_gqhemo that might be interesting to think about together. On the other hand, I see Common Lisp people get annoyed about similar issues: https://mailman.common-lisp.net/pipermail/asdf-devel/2022-January/006680.html [1] ../share-your-work/1665503282.267399.html [2] ../devlog-together/1665594315.849469.html |
| 12 comments | |
|
|
Breck Yunits
2022-10-11 11:04 #
Scenario: GitHub, GitLab and BitBucket decide they're just not that into it anymore and are gonna sunset. What are the other cool online VCS communities? |
| 9 comments | |
|
|
Mariano Guerra
2022-10-11 03:21 #
> what's a good UI to edit a string representation of a small array of numbers? https://twitter.com/pomber/status/1579775193215799296 |
| 3 comments | |
|
|
Gregor
2022-09-27 09:18 #
A very status-quo question to inform my near-future-of-coding project (Tofu). How many keystrokes does this transformation take in your preferred editor? How natural/flowy does your mental model feel while making these changes? https://twitter.com/watware/status/1574778141234659336 |
|
|
Breck Yunits
2022-09-27 08:46 #
Did someone here make this: https://www.youtube.com/watch?v=qGOIt0xh0dw? |
| 6 comments | |
|
|
Peter Saxton
2022-09-26 07:38 #
Good afternoon. I was thinking about the following question an the answer was less clear than I was originally thinking. What is the fundamental difference between a Repl and a Shell? In my opinion there is very little, the main differences seem to be what systems they are plugged into. i.e. a shell is plugged into the os and a repl is language specific. Also if we add the nice feature of being able to change previous expressions do both end up looking effectively like a code notebook. So the final feeling is just that a code notebook is just a fancy Repl. In which case are code notebooks the future of Repl's/shells. Would you like a code notebook that was able to read your os processes and replace the sell? |
| 7 comments | |
| # |
Jim Meyer
2022-09-20 01:33 #
TypeScript :crown: Last month of PRs on GitHub. https://twitter.com/jntrnr/status/1572069512920584192 Pretty excited about this, because static type info such as typed React props unlocks new types of visual IDEs for the web. |
| 4 comments | |
|
|
Jason Morris
2022-09-10 22:30 #
Most user interfaces let you say what is true, and then what you didn't say is presumed false. The entire relational database world is based on that idea. The statements are about a single, closed world with boolean truth values. But that's not how humans actually know things. The user can't say "Definitely X, maybe Y, not Z" even if that's exactly what they know. I just now realized that the language I'm using knows how to deal with multiple worlds, and five different truth values are possible in each, but no one has ever built a user interface for collecting structured data that way! Here I am trying to mimic the capabilities of less sophisticated tools, when I should have been building the thing that collects knowledge those systems can't even represent. |
| 13 comments | |
|
|
Jason Morris
2022-09-10 12:21 #
We have all seen UI for building complex data structures based on a schema with references. Jason is a person, bob is a person, bob is a friend of Jason, etc. I am designing something similar, but I want it to give the user the ability to also make partially ground and unground statements, and to specify that fully ground, partially ground, or unground statements have an open/closed world assumption applied to them. Has anyone seen a user interface for that? |
| 11 comments | |
|
|
Ricardo Medina
2022-09-09 07:49 #
I'm sure this has been discussed here (appreciate if someone can redirect me), but... What use cases do you see people have for creating their own applications? Do you think people are willing to pay for it? |
| 8 comments | |
|
|
Tony Worm
2022-09-07 16:50 #
I'm working on generating code from a series of prompts posed to a developer like this: https://twitter.com/verdverm/status/1566252517062807552 Is this the kind of thing you mean in your first question? |
| 3 comments | |
|
|
Jason Morris
2022-09-07 16:24 #
Also interested if anyone has an up-to-date view of whether ASP has ever been used to power expert systems. Same reason, different paper. |
|
|
Jason Morris
2022-09-07 16:22 #
Is anyone aware of examples of people generating code from the results of an answer set programming query? I'm trying to figure out if this experiment I'm planning is sufficiently novel to propose a paper. |
|
|
Jim Meyer
2022-09-02 23:27 #
A UX design tool has one job: Materialize the designer's intent as working code. Everything the tool does is in service of refining that intent (ideation, exploration, validation). A programing tool has one job: Materialize the user's intent as working code. UX design tools are programming tools. UX tools today care very little for code. But they should, and it needs to be at their core. |
| 3 comments | |
|
|
Mariano Guerra
2022-08-31 09:11 #
What are alternative solutions to variables and scopes? Is there a proven abstraction that end users easily understand? |
| 38 comments | |
|
|
Kartik Agaram
2022-08-28 21:40 #
:thread: on the first 25 minutes of https://futureofcoding.org/episodes/057 Summary: • It would be cool to create a visualizer for low level software. Assembly language in particular would benefit from visualization to catch errors in register allocation, manual memory management. • A retro game console may be a simple test bed for trying out various FoC ideas. You could literally save snapshots of all 64KB of RAM for some machines every single frame, and then perform further analysis on them, diffs and so on. • A similar idea: GPU Maker 2000 like RPG Maker 2000 but for GPU programming. • The Gameboy has a particularly ideal form factor for a convivial tool for thought. In particular, it has a camera, something I wasn't aware of. Does anyone have a good sense of the space of Assemblers out there? Surely there exist debuggers for Assembly? Maybe reverse engineering is a space to look at? Are there any debuggers or reverse-engineering tools with command languages? Ghidra does seem to have something: https://resolute-tech.com/an-introduction-to-ghidra-scripting. Does anyone here have experience with it? |
| 8 comments | |
|
|
Tony Worm
2022-08-25 19:35 #
Ask FoC: What are your favorite Lisps? Which ones are good for typical engineering work vs which are good for thinking and creativity? |
| 15 comments | |
|
|
Ivan Lugo
2022-08-24 10:17 #
Heya folks, we’re live now and doing some thinkin’ chats! |
|
|
Arvind Thyagarajan
2022-08-24 08:40 #
This is very cool! https://www.fuzzmap.io/?welcome=1 We work a lot with visual state-machines (creating/defining state-machines visually to drive system state in the visual programme -- think xstate js but you're constructing the diagramme rather than having it rendered for you from code you write) and this fuzzer demo is exciting because it's an auto-state-machine, derived from real system states -- I can imagine this delightfully integrated with a testing framework. I'm picturing a (dastardly? :laughing:) node-and-wire programme that runs through this fuzzer. If the run through emerges an unaccounted state, it's materialised in the state-machine embedded in the node-wire-nest, and the programmer can now create downstream logic to address this unexpected case. could something like that work? |
| 1 comments | |
| # |
Kartik Agaram
2022-08-22 21:40 #
I'm not sure who else to ask, but: does anybody have a pointer to a picture/meme that looked something like this? Basically the idea is that as you practice something you get better at doing it and better at assessing the quality of artifacts (music maybe? Or painting? I don't recall.) Both improve in discrete steps, but the steps are staggered, which results in happiness following a sinusoidal wave. When you can see what's wrong with your creations you're unhappy until your making skill catches up with your level of discernment. Then your discernment has another step improvement and the cycle repeats. Does this ring any bells? |
| 8 comments | |
|
|
Timothy Johnson
2022-08-18 12:37 #
I'm curious what the rest of you think of this. Do you agree that software is in decline (by which the speaker means that it's getting more buggy/less reliable over time)? https://www.youtube.com/watch?v=FeAMiBKi_EM |
| 12 comments | |
| # |
dustin
2022-08-17 21:17 #
this is a very _light_ coding environment, but I turn to it often when working on light math, dividing up costs of trips, napkin math for finances etc. To me, what is so powerful is that, in plain text you can define the value of a variable as well as state its type: ‘$200.00 in CAD’ etc, and that the right gutter shows calculations, live. The app in the screenshots is Numi. I know https://soulver.app/ is a comparable app as well — |
| 1 comments | |
|
|
Ivan Lugo
2022-08-16 18:05 #
If you're interested in joining the above for a test run, give a +1 and I'll toss a reminder invite to ya! Invite or not, all are welcome to join! |
|
|
Peter Saxton
2022-08-16 08:39 #
I enjoyed this talk on visually editing state machines and remix.js as a way for hiding certain implementation details that we normally have to deal with. I think there's a near future here. https://www.youtube.com/watch?v=r4xI6LPf6iQ. The talk is a bit slow to get started |
| 4 comments | |
|
|
Gus Hogg-Blake
2022-08-16 07:20 #
Has anyone tried or would like to try some regular pair/mob programming sessions on their FoC projects? Feels like a 1-hour a week session or something might be the sweet spot in terms of adding a bit of momentum/energy and opening ideas up to fresh input/criticism. perhaps a small group of us could rotate between projects? |
| 36 comments | |
|
|
Paul Tarvydas
2022-08-15 20:55 #
For discussion: I am thinking that FoC should be done with “dynamic languages” (Lisp (pre-CL), JavaScript, REBOL, Self, technical diagrams, etc.). PoC (Present of Coding) languages, e.g. “static languages” like Haskell, Rust, C++, etc., and, compiler-appeasement dynamic languages like Python, Racket, Scheme, Smalltalk, Common Lisp, etc., are used to optimize and to structure FoC ideas, but, they inhibit out-of-the-box-thinking. Writing the program twice (or more times) is more efficient than writing the code once only in a PoC language. What is “efficient”? At one extreme: all Design and no optimization, at the other extreme: all Production Engineering (optimization) and no Design. |
| 12 comments | |
|
|
Ivan Lugo
2022-08-14 14:37 #
Hey all! I’m looking for a bit of help solving (what I think is) a really simple problem, but I just can’t seem to find someone - or the right article - to help me figure it out. It’s a simple graphics vector problem, and my inexperience in the space is doing me no favors in abstracting the problem to do the right maths. Does anyone here happen to know a good place to ask technical questions in that space, or, would anyone happen to know of friendly soul(s) with time to walk through the issue? StackOverflow and the dregs from days of search engine digging is chock full of answers that revolve around but don’t tackle exactly what I need, and the one solution I have found doesn’t seem to apply to my current state of code. I consider help like this of the highest form of validation and “raising up”, and would happily compensate said helper or producer of article in any reasonably requested way :heart: |
| 19 comments | |
|
|
Orion Reed
2022-08-12 08:10 #
I'm quite sceptical of apps/software as the best way of structuring computing. I don’t pretend to know which alternatives would be better (and like to think there doesn’t need to be a single answer) but the explanations for the success of software and the failure of alternatives always seemed pretty underwhelming, often leaning on the fact that software did succeed as proof of its own_. However,_ finding an argument to be weak isn’t really an explanation, even if it suggests the need for one. Recently I was wondering if there is explanatory power in “Conways Law” if applied to large socio-technical systems. Conway was thinking about the internal structure of software as produced within an organisation in How Committees Invent. The paper has much more nuance, but the adage roughly states: > Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization's communication structure If we apply this line of thinking to computation at large, we might ask questions on the impact of communication mechanisms inherent to capitalism and their structuring effect on the computing landscape. This maps quite well to software, as there is often a correspondence between software production and individual firms. We might imagine a different economy (e.g. some highly federated, anarchist society) and think of what the organisation of computing might look like. This is something I think is interesting to explore on its own, but it lead to a different idea I find quite compelling: That the success of software is a result of a drive to make computing economically “legible” to capitalism. (I’m appropriating legibility here from James C. Scott’s Seeing Like a State) This makes some sense as an explanation for software, but it might also offer a new explanation for things like app stores among others. • Platforms could be seen as (among other things) exertion of control of legibility, where legibility is much higher for those who control the system (e.g. Amazons view of their own services vs a users view). • The apparent success of software over alternatives such as open document systems, or composable (non-software) GUI systems, or "computational media" efforts, might be explained as not a technical or conceptual success, but as providing legibility that alternatives lack. • More interestingly to me, is wether legibility is even something desirable in the first place. [This is a slightly rehashed line of thinking I passed around at work that I thought might be interesting to this crowd. This isn’t thought through, so just read it as casual speculation. But I do think we need an explanation, if we are ever to move beyond this current way of interacting with digital systems] |
| 17 comments | |
|
|
Steve Dekorte
2022-08-10 08:31 #
I thought this HN post on databases might be relevant to the future of coding: https://kevin.burke.dev/kevin/reddits-database-has-two-tables/ |
| 10 comments | |
|
|
Srini K
2022-08-05 13:25 #
random question — why aren’t live coding languages more popular? I don’t know many people that use them day to day or in a business, nonprofit, etc setting. Excel is maybe the only exception here |
| 44 comments | |
|
|
Srini K
2022-08-04 13:34 #
Very cool to see someone knows Excel so well showcase their internal understanding / mental models. Also the talk is just funny https://www.youtube.com/watch?v=0nbkaYsR94c |
| 1 comments | |
|
|
Orion Reed
2022-07-28 09:48 #
I’m writing a paper on the notion of “digital objects” and would seriously appreciate any papers/sources that explore this idea (the notion of digital “things” in general, not OOP-specific). The notion of an “object” is one of the most basic and fundamental ideas in philosophy and it has received surprisingly few treatments in the context of computing given its importance. I have many thoughts on the significance of the question, and have developed a tentative theory of digital objects that I think is well supported and useful. But at the moment I’m just trying to gather more literature and perspectives (as in, your perspectives!). A few related phrasings to the question that I’ve seen around: In what ways do digital things exist? What is the nature of digital “stuff”, What defines a computational entity?, etc. While “object” is really the proper term here, there are others that get used often like entity, item, thing, or unit. Some sources that explore this question: A theory of digital objects On the existence of digital objects Theorising the digital object and for reference here are wiki pages for objects (in computer science) and objects (in philosophy) |
| 12 comments | |
|
|
Jimmy Miller
2022-07-27 15:24 #
A lot of us here have projects that we are working on. Or ideas we'd like to see become reality. But I'd bet that many of us feel we haven't been able to get things to be the way we want them. Maybe we make prototypes and they fall short of our goals. Maybe we can't express our ideas well enough. Maybe we never put the ideas in any tangible form. I'm curious about everyone's thoughts on if there is something that could be done about that. Could we as a community help? Is there a structure that you think would help? A societal change? A personal change? |
| 13 comments | |
| # |
Nilesh Trivedi
2022-07-27 04:40 #
A few days ago, I shared a link to this visual theorem proving system: http://incredible.pm/ It doesn’t have Dependent Type Theory yet, so it can’t quite do theorems about natural numbers yet. But it does go all the way to Simply Typed Lambda Calculus. I found it fascinating and have been solving the puzzles. Here’s an idea that it triggered: What if we could build physical Lego-like blocks that represent these kind of reasoning and their shapes and ports support syntax-less proofs? Wires can carry truth values just like this simulator and variables can be introduced with specific connector shapes. Bugs like cyclic reasoning etc can probably be detected with feedback/amplification etc. May be the idea is far-fetched but there are examples of people using physical programming blocks which are Turing-complete like Scratch and the block shapes naturally eliminate syntax errors and basic mistakes. |
| 17 comments | |
|
|
Peter Saxton
2022-07-25 05:41 #
Has anyone seen an implementation of a structural REPL? Structural Editors are great but is there something that could be both structural and a repl. I'd love to be able to open a structural repl at a point in my program and investigate at that point. |
| 14 comments | |
|
|
hamish todd
2022-07-24 17:47 #
I have a question about experiments with flow-based (eg wires and boxes) programming. The main thing people complain about with them, with very good reason IMO, is how complex programs become unreadable spaghetti. By comparison, seeing code in an editor, in general, appears as a zoom-in on a few lines of code. This lets you ignore the complexity of the rest of the surrounding program - or at least temporarily avoid being bothered by it. To remedy this problem, I am guessing some people must have made auto-hide systems for flow-based programming. The equivalent of what code-in-editor has by default: you can't see the code above or below the cutoffs of the window. What are examples of systems doing this? @Jack Rusher |
| 6 comments | |
|
|
Jim Meyer
2022-07-16 00:49 #
UIs are stories we tell to make the invisible visible and the intangible tangible. We imbue raw energy potential – electrical patterns of presence and absence – with a sense of purpose, meaning, and yes, sometimes even a quirky and joyful personality. Love this kind of "work" :smiling_face_with_3_hearts: |
| 1 comments | |
|
|
larry
2022-07-08 18:22 #
If you weren't aware: many videotaped demos from the long history of SIGCHI conferences are available on youtube at https://www.youtube.com/c/acmsigchi. Just jumping around I came across two medical records related demos. MedKnowts (2021) has a bunch of interesting affordances based on combining note-taking with structured information retrieval https://youtu.be/IHyqkKHTsb8?list=PLqhXYFYmZ-Vd7Qp-dSijszf-0Fe7oqG_R, while the last minute or so of the LifeLines (1996) demo shows a visual interface for patient history that is sadly much better than the one in my health-care system's current patient interface. https://youtu.be/Zl6BirK93nY?list=PLqhXYFYmZ-VeryE_-sJuc0oo1e_szTkTa&t=316 I suspect there are many gems here amongst all kinds of strange and charming past attempts to invent the interfaces of the future |
| 1 comments | |
|
|
Christopher Shank
2022-07-07 18:11 #
Been thinking about this framing of how programing languages are these higher dimensional entities that we interact with though a textual projection that has limited dimensions to interact with. Visual programming languages are means to interact with with programming languages with more dimensions. Jumps (and other control flow like loops and branches that try to hide jumps) are one example of where this projection happens since text is sequential and allows us to link non-sequntial code into sequences. “Dimensions” is being used very loosley here, im not sure how to define it, but its not necessarily physical dimensions. For example, maybe i would consider function stacks its own dimension that is textually hard to understand (https://twitter.com/ShriramKMurthi/status/154503970614827827…). It’s interesting to think about what dimensions we are adding to visual programming languages and how they change our understanding of the software we write! (For more https://twitter.com/chrisshank23/status/1544946015903502337?…) |
| 6 comments | |
|
|
Sergej Koščejev
2022-07-01 08:47 #
I'm looking for some pointers/articles/papers on abstractions for incremental computations. Something that describes a Computation that can compute a value on demand and has Dependencies and the value is invalidated when one of the Dependencies change... and a Computation can also be a Dependency of another computation. But more detailed and more rigorous. Has anybody ever seen such a thing? |
| 20 comments | |
|
|
Jan Ruzicka
2022-06-30 12:20 #
What do you imagine under dynamic medium? Is there the dynamic medium, or are there more of them? What aspects of it are the most important? What tools will be used to interact with it (what are the analogs of pencils)? In what respect is it a medium -what does it mediate, and between whom? What kind of literacy will it enable? |
| 6 comments | |
|
|
Dalton Banks
2022-06-29 10:32 #
here’s a question i’ve been chewing on in various forms; i’m interested both in responses and different ways the question may have been framed/answered before https://twitter.com/pixelflipping/status/1542195418670546945 |
| 6 comments | |
|
|
Orion Reed
2022-06-21 07:12 #
Does anyone know of FOC orgs (businesses and/or communities) that are run cooperatively/democratically? What are your thoughts on the intersection of democratic self-management and FOC projects? There’s often talk of “democratising” computing, and to me this often feels half-baked when the control is ultimately in private/undemocratic hands, even if the technology has emancipatory potential. |
| 6 comments | |
|
|
Personal Dynamic Media
2022-06-20 11:16 #
Is it possible that in our efforts to find alternatives to imperative programming, we have failed to promulgate knowledge about how to program imperatively? Back in the day, folks like Dijkstra, Hoare, Wirth, Knuth, and Naur did a lot of work on figuring out how to write imperative programs that did what they were intended to do. However, nowadays, I get the impression that much of the energy being spent on making programs better is focused on alternative ways to structure programs, like object oriented design, distributed and/or parallel and/or concurrent, event driven, reactive, etc. However, most of these design disciplines still involve executing chunks of imperative code, they just involve new and different ways of deciding which imperative code runs when. This may be a dull and boring idea, but is it possible that part of what we need in order to improve software is wider distribution and study of the old ways of writing correct imperative programs, so that more of the little chunks of imperative code that get executed during an object oriented or event driven program will do what they are supposed to do? |
| 7 comments | |
|
|
Alex Cruise
2022-06-20 10:45 #
There’s a recurring theme in my career, going back to my very first job, that goes under the mental headline of “wide logic” problems… That’s where you have a somewhat narrow stream (conceptually, not necessarily streaming per se) of data, and you need to evaluate a large number of functions against each item--at least a handful, often dozens, sometimes hundreds! The functions are basically always provided by the user, although normally in a declarative, non-Turing-complete DSL. I’m curious whether others have noticed this pattern, and whether you know of any more mainstream labels for it? The closest I’ve found is papers that reference publish/subscribe and indexing techniques for complex boolean expression trees, e.g.: • An efficient publish/subscribe index for e-commerce databases (VLDB ’14) • Analysis and optimization for boolean expression indexing [BE-Tree] (ACM Trans. DB. Sys. ’13) • A-Tree: A Dynamic Data Structure for Efficiently Indexing Ar… (SIGMOD/PODS ’21 … actually this is a new one for me, I need to read it now… :slightly_smiling_face:) |
| 15 comments | |
|
|
Orion Reed
2022-06-17 08:14 #
I’m trying to think of a qualifier term for a certain kind of mutability. Mutability as a language construct is well trodden ground, but there’s another kind of mutability that exists at a systems level which isn’t tied to language design or specific language. Things like filenames would fit in this category. These are often to do with naming but there are many cases where the mutating thing is structural, such as filesystem hierarchies, pointers to digital objects (latest X, agreed-upon version of Y, etc). This kind of mutability appears more varied and common than the concept in PL, but I don’t want to refer to it as just “mutability” because this could be misleading. “State” is not a sufficient notion either, as this is just referring to the value of a thing in relation to time. I’m doing some work on “Mutability as Governance” which argues that mutability (at least the kind I refer to here) is best understood as a digital governance problem, as it necessarily involves coordination between multiple systems in ways that mutability within a single language does not. Even pure functional languages interact with a stateful environment and require mutability in this sense (e.g. naming and structuring of source files) Terms like systemic/emergent mutability, inter-systemic mutability, or multi-party mutability have popped up but I don’t know if these really do a good job. |
| 36 comments | |
| # |
Ivan Lugo
2022-06-16 09:21 #
Sharing this because it’s one quote that I keep falling back on as motivation and validation that my desire to build a three-dimensional environment for software development is at least a path worth going down. It’s hard to come by that sometime :smiley: |
| 18 comments | |
|
|
Steve Dekorte
2022-06-15 11:06 #
Are there any IDE's that allow you to visually interleave the stack trace with debug output, so you get a picture of which frames the output occurred within? |
| 10 comments | |
|
|
Jim Meyer
2022-06-15 07:57 #
As a web dev I can't count the number of hours I've had to spend on re-loading a web page after an edit, and then clicking my way back to the state I'm actually trying to iterate on, even with hot module replacement enabled. Anyone know of visual programming projects where the user can execute their program, interact to change program state, pause program execution, edit the program to make changes, and then resume execution from that point on with a modified program? My current thinking is that there's a lot of potential edge cases where the program could break or fail due to undefined semantics, but there could be a sweet-spot for doing minor edits and staying productive due to not having to restart the program from scratch. Hot module replacement has become widely used, but that's limited by having to do traditional text-based coding, and it's only able to replace code at the module level. I'll illustrate one use case where I think there's a good tradeoff between complexity and reward for the user: • Open a page in the product being coded in a VPL environment • Open some kind of overlay, e.g. a dialog • Pause the program • Tweak the appearance of the dialog while remaining in the context of the current program state • Add new UI elements to the dialog (non-breaking changes) • Resume the program |
| 17 comments | |
|
|
Henning Sato von Rosen
2022-06-13 01:50 #
[This is like 5min into the future, so not sure it qualifies as a topic in FutureOfCoding slack? Admins fell free to delete or move] A language construct terminology question: What is a good name for the “transposition” of a Case expression? (see below) Motivation: The idea is to integrate some more expressive language patterns into e.g. JavaScript using Continuation-Passing Style (CPS), in a friendly way by putting the CPS functionality in predictable places in readable constructs. The Case expression is similar to Haskell pattern matching in intended usage. The corresponding JavaScript syntax needs a few extra parens and commas. Clarification: By Case expression I intend: Case Success at p#n means choose succ#n. Failure at p#n means continue with clause n+1. By ‘transposition of Case’ I intend: CaseTransp Failure at p#n means choose fail#n. Success at p#n means continue with p#(n+1). Note: <pat> are CPS constructs in the form of functions that can succeed or fail. <fail> and <succ> are ordinary functions. |
| 8 comments | |
|
|
Jason Morris
2022-06-08 11:07 #
Is this a known result in PL theory? "The set of stable minimum models returned in response to a query in a goal-directed stable model constraint answer set programming language entail, taken together, a stable model constraint answer set program for answering only that query." |
| 11 comments | |
|
|
yeT
2022-06-07 10:57 #
Listening back to old episodes, caught Jason Brennan talking about his work on Beach, and it got me wondering, is there any work in the world of notebook-esc environments that plays with the infinite absolutely spaced canvas concept we've seen so much of recently? Is there any merit to moving such a tool off the y axis? Been daydreaming about a spatial and federated tool somewhere between observable and obsidian |
| 2 comments | |
|
|
Václav Blažej
2022-06-07 06:01 #
People here often talk about creating programming languages to make programming easier. Going one level of abstraction up. Does anyone work on making a way to create new programming languages easier? |
| 10 comments | |
|
|
Jim Meyer
2022-06-04 03:48 #
It's not enough for next-gen UX design tools to be code-based. They have to be code-native (liked developer tools), able to read and write code without any intermediate data formats, and they have to do in in a way that doesn't compromise how designers think and prefer to work. As soon as a tool isn't code-native, you run into the multiple sources of truth problem. How to translate between data formats. You run into one way code exports/generation. You run into manual copy/paste by developers to bridge across disconnected systems. Code-native is the endgame for design tools. As we push into AR, VR and more 3D, static 2D vector-based canvases will fall short and out of favor. "Inspect", "Export", "Copy/paste", "Integrate with code". When they disappear from design tools, we've arrived at code-native. |
| 2 comments | |
|
|
Alex Cruise
2022-06-03 10:47 #
This is the first attempt I’ve seen to implement Functional Relational Programming (cf. Out of the Tar Pit) that looks serious! https://www.cell-lang.net/index.html |
| 3 comments | |
| # |
Dalton Banks
2022-06-03 09:45 #
wacky sketches in Vim (to me this is thinking-together) |
| 3 comments | |
|
|
Mariano Guerra
2022-05-30 02:33 #
if I wanted to make a slack bot for this channel, what would be the most Future of Code Compliant :tm: way to do it? |
| 22 comments | |
|
|
Evan Payne
2022-05-29 12:48 #
The details are fuzzy now, but when I was a teenager I read Tad Williams's series Otherland. It was written in the late 90's and so didn't really grasp how the internet would come to work over time. Its premise was that a lot of the world was immersed in virtual reality worlds, but one group of ultra rich folk had built a secret system that was impossibly realistic, and well, it got weird from there. Still, it had some interesting concepts that really inspired me. Two in particular: • Sellars, and older guru-like figure, had a garden at his home on the military base which was secretly his access to his file system. Eg, each leaf and stem on the plant was representative of files and connection between them, and they could only be accessed by being in the physical space with the plants. • The assassin character had a generative music implant in his head, which allowed him to mentally tweak the inputs on the music playing in his head, triggering swells in the orchestra, or moving from slow to fast rhythm, or changing keys or genres. Not playlists either, but properly generative, with inputs from his own subvocal commands, but also from the environment (eg, light or other sounds) I think there are probably a wealth of future-of-coding ideas in older scifi novels. |
| 2 comments | |
|
|
Václav Blažej
2022-05-29 07:37 #
Core of a futuristic system - use cases. A) What things should the programmer be able to do but is not able to because of the limitations of today's computers and systems? B) How should a interaction of a programmer with a computer look like in the future? C) If you had 10000 hours of free unencumbered development hours, what would you do? |
| 31 comments | |
|
|
Jim Meyer
2022-05-27 22:51 #
Feels like computers are these incredible tools that we've invented, but we (their creators) are only able to comprehend maybe 5% of what they're capable of. Exploring those 95% together is what makes this community so exciting :smiling_face_with_3_hearts: |
|
|
Jarrett Atkinson
2022-05-27 14:56 #
I'm not sure if this is going to be discovery or thinking together, but oh well. I've had the idea in the back of my mind for a long time that UI sucks. It's bad for us as programmers when we have to build an app across 5+ form factors (more when you consider the possibility of AR, VR, or voice assistant applications). It's bad for the consumer when we develop a bad UI. It's bad for the consumer when we build a good UI, but it's not talored to how individuals use it. For example I use about 5% of the potential functionality of my IDE, but it's extremely tedious ranging to impossible to customize the UI for myself. Yes, keyboard bindings exist but for the most part let's ignore that. Most casual users won't learn Keybindings. And, that ignores that I'd like to comstomize the application state I can view. OK, the problem established, I'd like to think about a solution: stop writing UI. Instead, write api descriptors so an agent can design a UI for you, knowing the capabilities of your application. Early versions of an agent will require massive amounts of hints, but that's probably still easier than writing UI. Having an agent (ai maybe?) would also allow input from individual users to the system with hints as to how they want to view the app. "show the buttons in this order. " "show the status of this in that box." etc. Graphql is the closest approximation of such an api descriptor I can think of. On to the questions: Has this been considered before? What prior art is in this space? Are we near technical feasibility of such a project? |
| 6 comments | |
|
|
Jim Meyer
2022-05-27 07:50 #
Undo and redo in relationship to CRDTs/multiplayer seems to be an underexplored area with huge challenges. Here's a case where multiplayer undo-redo becomes interesting for visual programming. (This would be visual programming, e.g. via a blocks/node interface, but I'll use JavaScript and React to express the states) Initial state: Empty div. return ( User A: Inserts a new Dialog component, which uses an "open" state to control its rendering. const [open, setOpen] = useState(false); Now, an undo by User A at this point would rightly remove both the useState statement and Dialog element. But, lets say user B does this before that: User B: Inserts an expression that references and displays the open state: const [open, setOpen] = useState(false); If User A now wants to undo, removing the open state would break User B's use of said state. Are there any examples in research or open source of how to gracefully resolve this? I assume that node based programming could run into this dependency challenge, but I'm unaware of any node based tools that support multiplayer with undo/redo. One approach I can think of is to check whether there are dependencies on nodes that would be removed by undo, and simply aborting the undo with an error, but I'm curious if there is a more elegant approach. On a related note, the UI would also have to prevent a traditional delete operation on the open state, since this would leave the program in an invalid state. |
| 28 comments | |
|
|
Joe Nash
2022-05-27 03:51 #
TL;DR: many computing applications have transcended files-and-folders, why haven't developer tools? :thinking_face: During Papers We Love Education yesterday, we were joined by a couple of teachers of various age groups, and I had the opportunity to ask them about whether they've observed what this Verge article describes: https://www.theverge.com/22684730/students-file-folder-direc… The article is about how ubiquitous search and cloud storage have meant that young folk no longer have a mental model of file systems, or really understand files and folders. I had suspected I was observing this in my work, with some of the questions I was getting in our introductory content about CLIs. The educators confirmed they're also seeing this and it's a big problem. That struck me as a big issue for CS education. If students are coming in never having interacted with an app that deals in files, saving files, or organising content in directories, that's a huge hurdle to beginning programming, or interacting with most tools. Everything we do and use still has the file system at the centre of the experience and the interface. Whether the “tabletification” of computing is a positive thing or not, it's interesting to me that unlike many categories of applications, developer tools, even for young learners, have resisted it |
| 14 comments | |
| # |
Jim Meyer
2022-05-24 02:01 #
I've been thinking about the limitations and shortcomings that VPL environments have when they focus on program structure instead of the desired outcome a user has in mind. Another word for structure is recipe. Recipes are difficult for most non-coders to wrestle with because they force a mental model of “do A, then B, then C to hopefully achieve the X that I want”. A recipe by its definition means that the outcome – the thing the user is trying to achieve - is a separate thing, which usually divides the UI into two distinct and somewhat disconnected parts. This brings me to outcome-driven coding (ODC). I’m making up this term, surely there is a term grounded in research? :grin: With ODC, we’re flipping the script, and letting users work in a way that follows a pattern of “Tinker and change until it (the outcome, not the recipe) feels right”. By mostly hiding the program structure, and showing the outcome of running the program live, an ODC tool can be made on top of an existing programming language, leveraging an entire eco-system of existing work, be it open source, or existing code bases that a product team is working on. This is a big deal for adoption of such a tool, and the foundation for collaboration with developers using IDEs. There’s an interesting trade-off here that has to do with expressive power versus complexity in a VPL environment. With ODC, we can manage that complexity by deciding on which parts of a code base that visual programming is best suited for, and which parts to “leave alone but still execute to show the real product outcome”. Parts of a code base are inherently about the human element and the user experience. Let's call this "design code". Design code naturally centers on using and defining design system components, the visual language, use of data, navigation flows, and pages. This is where visual programming shines. The ODC approach lets us create a tool that is optimized to work with design code visually, in a way that UX designers prefer, while allowing traditional business logic code to execute unhampered inside the tool. The key is to allow collaboration on a single shared code base, with tools specialized for the unique skills and needs of the people in a cross-functional team. Would be great to hear what this group thinks of this hybrid approach, and whether there is existing work that is similar. Thanks :slightly_smiling_face: |
| 14 comments | |
|
|
Mariano Guerra
2022-05-23 05:28 #
Any good recommendations on Term Rewriting Systems? |
| 9 comments | |
|
|
Tom Larkworthy
2022-05-22 13:55 #
(I split this out of the deep goals thread) @Jack Rusher asks: > @Tom Larkworthy Have you used any systems with faster feedback than hot-reloading? maybe? Just to clarify what I mean by hot-code reload vs live-reload. Live reload is a full restart on a program on change, which loses state, vs hot-code reloading where only changed code is reloaded which maintains program state between partial restarts. But I would say Observable is a little beyond hot-reload because it's also the notebook format so program output and code is interleaved, so it that removes a context switch between IDE and program output and gives you a REPL vibe inline too. But thats as advanced as I have got so far for fast feedback. Can I do better?! |
| 1 comments | |
|
|
Nick Arner
2022-05-20 14:23 #
New guest post on the blog from my friend Anton (https://twitter.com/atroyn); Visual Debugging Now! https://nickarner.com/notes/visual-debugging-now-may-20-2022/ Includes a project proposal that some in this community may find interesting to take up |
| 10 comments | |
|
|
Amit Rathore
2022-05-19 15:17 #
I started Awake with the publicly stated goal (March 2019) of co-creating 100M new jobs through 10M digital entrepreneurs, by building a more fair Internet Building In Public is a great way to go |
|
|
Shalabh
2022-05-18 23:24 #
Hello friends, recently @Konrad Hinsen tweeted that we should document our “deep goals” and that has me thinking about how to formulate such things. If any of you have formulated your “deep goals”, not just for your strategy or project, but the underlying motivating goal of your research, could you please share? Since we have overlap as well as divergence in what each of us is working towards, I think formulating the goals may help us see where we overlap and diverge? https://twitter.com/khinsen/status/1526075007050334208 |
| 21 comments | |
|
|
Chris Knott
2022-05-17 07:45 #
What would you put in an Information Management/Data Modelling version of 7 GUIs? That is, what difficult to model scenarios would you use to "stress test" different data formats/information systems (I'm struggling for the words here but I'm talking broadly about stuff like Relational Database, JSON, XML, Java classes etc). |
| 18 comments | |
|
|
Alex Cruise
2022-05-16 16:56 #
Time to dredge up Out of the Tar Pit again? It’s the only thing I’ve ever seen in ~25 years that looks like it might actually simplify real-world apps |
| 17 comments | |
|
|
Kartik Agaram
2022-05-16 10:21 #
@Ivan Reese at ../administrivia/1.652719.html…: > what even is a computer and what will we do with it? I've actually been struggling with this question a whole lot outside this community. Perhaps I should bring y'all in: • https://lobste.rs/s/i1b6tw/computer_science_was_always_supposed_be#c_2mffpq • https://forum.merveilles.town/thread/35/what-are-computers-for%2c-anyway%3f-38 • https://merveilles.town/@akkartik/107896035093628757 • https://merveilles.town/@akkartik/108043961340591227 (and thread) The conclusion I've currently arrived at is: • The kind of computers we have today prioritizes large organizations that pay people with money. The influence of this mindset is deep and infects almost all our tools. This "computer industrial complex" is often useful on short timescales, but it is also blind to a lot of the value people create with it. As a result, future decisions by the computer industrial complex often destroy value at people scales. • Right from the start (suspense alert), there's been a shadow computer with a different, more convivial purpose. Confusingly, this shadow computer often looks just like other computers. You have to look closely to look past the camouflage. • It's hard to see what people would do with these shadow computers if we weren't immersed in a world created by organizations. After some time thinking about it, I can't find a better answer than the one (drumroll) Vannevar Bush arrived at, right at the start: one thing convivial computers are definitely for is to externalize our brains. Paper expands memory. Computers expand both memory and modeling. This is a surprising, even shocking, conclusion for me to arrive at. I've always slightly looked down my nose at all the "tools for thought" conversations in this Slack. It's felt too close to productivity porn most suitable to avoid doing anything productive. Suddenly they're super relevant. But it's not enough to build more tools for thought. We have to think also about the process by which they're built. We have to ensure that the people-factory generating the convivial iPhone is also convivial. Because if it isn't, the conviviality will be short-lived as organizations kill or coopt it for their needs. The most important property to preserve, IMO, is to keep the raw code as naked and free from packaging as possible. It should be literally begging to be opened, inspected, tinkered with. Most software today fails to fit this bill. C programs come without source code by default. Browsers require big honking machines to be built from source. We write lovely naked Ruby code but then package it up into gems that go hide in some system directory where nobody can go look inside them. This is what my future of software looks like. |
| 18 comments | |
|
|
hamish todd
2022-05-15 18:23 #
If anyone has a writeup/previous discussion on here of this kind of thing, I'd love to see it. But essentially I was thinking about this kind of thing https://www.youtube.com/watch?v=nqx2RKYH2VU&t=6s Of course Bret demo'd Stop Drawing Dead Fish and, I think, Drawing Dynamic visualizations on touchscreens. I think a stylus is a good addition to that. It's slightly unpleasant to put one's finger on a touchscreen, and to try to do very precise manipulations of potentially pixel-sized things below it using one's relatively fat fingers. Multitouch is nice in theory, but genuinely, aside from pinch-to-zoom/rotate, I know of nothing else good that uses it |
| 2 comments | |
|
|
hamish todd
2022-05-15 18:17 #
Been thinking of getting a Remarkable / Onyx Boox / general note-taking/drawing tablet, intended as a serious replacement for my mechanical-pencil-and-paper-notebook setup. I'm using it as an opportunity to think about these devices as thinking/coding tools. |
| 36 comments | |
|
|
Jack Rusher
2022-05-13 23:59 #
This tweet is a distillation of my position in a long thread that's linked below. It would be nice to hear from some of you in that linked thread, which already features a bunch of FoC-adjacent people. https://twitter.com/jackrusher/status/1525357409681776640?s=… |
| 15 comments | |
|
|
Mariano Guerra
2022-05-12 01:52 #
Why don't we "put our code where our mouths are"? I've used really alpha projects in many areas but I almost never consider using "future of code" projects other than a short evaluation My main "excuses": • the result must be available as a web page/app • if it involves writing it must have vim keybindings (that's why I never stick to "tools for thought" note taking apps) Which are yours? |
| 4 comments | |
|
|
Naveen Michaud-Agrawal
2022-05-09 13:09 #
Do programming/computing systems have to be self-referential/meta-circular to scale? |
| 10 comments | |
|
|
Andreas S.
2022-05-05 05:58 #
Just found this gem while cleaning up my Zetelkasten a bit https://youtu.be/MlK0IQmqmCQ?t=2432 "40:41 "using objects at the lowest level in the system and combining the language with this idea of *co-routines* so I realized that if you had co-routines and persistence *you didn't need files* because you basically just paused every structure that you wanted to stay around and just let it stay active there's a way of getting away from data structures so a lot of interesting ideas in this thing and on each iteration of these languages.." |
| 28 comments | |
|
|
Vaughan Rouesnel
2022-05-02 15:22 #
Visualizing data structures (e.g. in PostgreSQL) When we think about the data structures our programs use or the execution flow of our programs, I’m pretty sure we all think visually and if we had to explain it to someone we would be drawing diagrams on a whiteboard. Yet pretty much all our coding and debugging is text-based. We are forced to visualize things in our minds. I’ve been debugging the PostgreSQL codebase to better understand how things work. I think a lot of people treat it like a scary magical black box, but it’s quite easy to debug a query’s execution path, and start to understand how it works. When we learn about databases, say from Andy Pavlo’s CMU database course, there are a bunch of core diagrams used to explain things. Like the parse tree, logical plan tree, physical plan tree, disk storage layout, btree/bitmap/hashmap index, etc. So what I was thinking was to instrument the PostgreSQL C codebase (via LLVM-IR), and then visualize some of the key data structures and stores. Imagine how easy it would be to teach database internals, if you could type in a query, and then visually step through the actual execution of the query with visual diagrams. I would imagine that any PowerPoint slides and diagrams could be replaced by this visual interface with a slider and some filtering options for what to show. |
| 5 comments | |
|
|
Mariano Guerra
2022-05-02 04:20 #
The MAYA Principle Loewy’s secret was essential to design for the future – but delivering the future gradually. He designed his famous logos, some of the most recognizable cars of the 40s, 50s, and 60s, refrigerators, and locomotives for his users’ present needs and skills while pushing the boundaries of design and technology beyond his users’ expectations. He called this approach the MAYA principle. Maya is an abbreviation for “Most Advanced. Yet Acceptable.” which means that Loewy sought to give his users the most advanced design, but not more advanced than what they were able to accept and embrace. Loewy believed that: > "The adult public's taste is not necessarily ready to accept the logical solutions to their requirements if the solution implies too vast a departure from what they have been conditioned into accepting as the norm." |
| 1 comments | |
|
|
Jason Morris
2022-04-29 10:47 #
Parsers generators allow you to write code that creates trees (usually), from a string of characters. So a way of creating a sort of abstractly 2D thing from a 1D representation. Is there an equivalent tool for generating representations from symbols arranged in 2D? A node-and-arrow parser generator, for example? Something in the graph database world? |
| 8 comments | |
|
|
Kartik Agaram
2022-04-29 10:03 #
I've been rereading https://www.bloomberg.com/graphics/2015-paul-ford-what-is-code during my latest bout of introspection. It annoyed me out of all proportion when I first read it (even though I could and still can appreciate the craft that went into it), and with the benefit of hindsight (and having joined this forum 3 years later) I think I understand why: it's unabashedly about the present of software, and by nature that endeavor makes a virtue to newcomers out of how things work today. On the other hand, I argued the opposite direction over at 1.645838.html…. So it seems to matter how vehemently I feel about the thing being taught to newcomers, whether I consider it important or irrelevant frippery. |
|
|
Personal Dynamic Media
2022-04-28 21:12 #
We used to dream of programmable agents that could pursue our interests online with a minimum of direction. For example, https://youtu.be/umJsITGzXd0 Online environments like LPmuds and MOOs allowed multiple separate people to create pieces of code that interacted with each other to create a more interesting world for the participating humans. And yet, nowadays we deploy CAPTCHAs to prevent automation, services place strict limitations on how apis may be used, and the word "bot" is almost always derogatory, often preceded by the word "spam." How can we create shared spaces that support automation in order to empower humans, but resist spamming, phishing, and other abuse? |
| 4 comments | |
|
|
Mariano Guerra
2022-04-25 07:03 #
:clipboard: How Visual is Your Language? Semantic Mutation Testing How many "box and arrow" languages are just scratch with arrows between the blocks? https://instadeq.com/blog/posts/how-visual-is-your-language-… |
| 15 comments | |
|
|
Andreas S.
2022-04-24 08:01 #
Do we have a thread about how roamResearch build their mobile strategy on ClojureDart? I mean how cool is that! Clojure and Lisp getting a huge push. https://twitter.com/conaw/status/1506402896660865029?s=21&am… |
|
|
Gregor
2022-04-21 01:11 #
I vaguely remember seeing a tool for visualizing data flows between systems, e.g. you'd describe a queue with multiple consumers and would describe what e.g. fan-out does and then you can trigger that action, seeing how data travels along the queue vertices to its consumers. Anyone know what I'm talking about or sth in that direction? |
| 1 comments | |
|
|
Personal Dynamic Media
2022-04-20 07:22 #
I've been pondering how to define a metric for how programmable a user's overall environment is. One thought I've had is to add up, for each application used in an average day, the percent of time it is used times the percent of features that can be programmed. Call it something like Overall Average Programmability. I know this doesn't account for differences in how easy it is to use the programmability of a given app (mailx is much easier to automate than Gmail) or the importance of individual features that can or cannot be automated, or the ease of integrating applications with different built-in scripting languages, but I think this is a relatively well-defined metric that might still contain some meaning. Does this sound like a meaningful and/or useful concept? Would you estimate, over the course of your career, that your environment's Overall Average Programmability has trended upwards or downwards? Any thoughts on the forces that may have impacted the trends? Personally, I think mine has trended downwards, and I suspect it has something to do with the increasing roles played in my life by mobile apps, web apps, and services that make their money from advertising and want to maximize user engagement rather than productivity. Thoughts? |
| 13 comments | |
|
|
William Taysom
2022-04-19 20:09 #
Straw poll... As a rule, which is more challenging in the software systems you work on: • :exploding_head: Changing an algorithm. (Example: Need to switch to recursion because nested loops aren't going to cut it anymore.) • :sob: Changing the data model. (Example: A user should be able to register more than one email address.) • :open_mouth: Some other change is my main source of stress. (Example: It always takes an unreasonable amount futzing to convince the linker to use the updated version of a library.) |
| 6 comments | |
|
|
Steve Dekorte
2022-04-19 10:10 #
For your FoC work, which missing frameworks/platforms/features/tools (that are not specific to the project) do you feel would most help you implement your project? (for example, have you had to take any significant detours from working on your project specific code to build such missing pieces?) |
| 13 comments | |
|
|
xyzzy
2022-04-18 14:03 #
In many aspects visual programming, hygienic macros, adts from functional programming are already hitting mainstream popularity with things like Unity and Rust becoming so popular. I view blockchain, quantum and AI as storage / db improvements rather than programming improvements fundamentally and they have their place. I think the next interesting wave of programming is going to be around improving the tools around programming like voice based programming, programming with the help of mobile phones and VR based programming IDEs. Thoughts ? |
| 1 comments | |
|
|
Steve Dekorte
2022-04-15 12:30 #
Was recently looking into "annotations" in Self and Java, as well as the related concepts of "property wrappers" and "function builders" in Swift. Are there other languages with similar features? Also, what are the most interesting uses of annotations you've run across? |
| 14 comments | |
|
|
Mariano Guerra
2022-04-11 06:36 #
What's the intersection between future of coding and distributed computing? I'll go first: unison and t2tile, are there more? |
| 15 comments | |
|
|
Josh Justice
2022-04-10 17:02 #
Has anyone heard of anyone trying to build end-user-modifiable apps with Electron? For those who are up for working in JS, it seems like you could have the same Electron app both run code and allow you to edit the code that's run in-app. Could even use VS Code's editor. |
| 3 comments | |
|
|
Chris Knott
2022-04-09 05:51 #
People admire Lisp's "elegance" in that it only has a single built-in datastructure - lists (a b c). Clojure, on the other hand is generally admired for being more "practical". One of the main things Clojure introduced is vectors [a b c], and maps {:a b, :c d} as first class syntax. I was reading some Lisp this week and my brain kept grating/complaining because I was seeing what are conceptually hashmaps written as what I was interpreting as a lists of pairs, something which I "know" to be different. Conversely, I have always thought it was annoying that C++ has three different operators (::, ., ->) that all essentially mean "member of". Would C# be better if you had to say System::Console.Print() instead of System.Console.Print()? No, I think most people would rarely feel the need to conceptually distinguish between these things, the C++ syntax is just annoying noise to me. What is it that distinguishes Clojure's brilliant decision to expand the syntax, from C# brilliant decision to compress the syntax? It implies to me that if there is a scale of simplicity-to-expressiveness, then humans just happen to sit at particular point on it. There's no particular "reason" for why these changes were right other than "they'd gone too far that way, go back this way". There's a local maximum somewhere in the middle. I have been thinking about this simplicity-to-expressiveness scale recently as it irrationally annoys me that on WikiData, "instance of" is "just another relationship" (it's P31 - "citizen of" is P27!). I think that RDF is far too far towards the "elegance" end of the spectrum and would greatly benefit from a Clojure-style acknowledgement that some things are more different, and should be more differentiated. Yeah, it's mildly interesting that Node-Rel-Node triples is all you need to describe an ontology, but that's not actually how people think about the world... |
| 8 comments | |
| # |
Joakim Ahnfelt-Rønne
2022-04-07 13:11 #
Inspired by the recent post on Crosscut, I started thinking about geometric programming, and what it might look like. I came up with the idea of using areas and line segments of 2D shapes as inputs and outputs. For example, a rectangle gives us addition (the half circumference), multiplication (the area), square root (using area as an input and measuring one of the sides): (image 1) One could imagine an iteration construct ala the one in Bret Victors computational drawing program, or similar to the one in Crosscut, that allowed expressing e.g. Fibonacci iteratively: (image 2) Here the green arrows connect inputs lines to output lines, and the dots show where line segments begin and end. The dotted rectangles represent iteration, where the first rectangle is used to specify the relation to previous rectangles (exactly how is a bit vague, I know). The green line sets the distance between each iteration. Similarly, a unit circle could show the angle as a bent line (in radians, as the circumference is 2*pi), and sin/cos as shown. Using sin/cos as inputs and measuring the bent line you get asin and acos: (image 3) Thoughts? Maybe it already exists? |
| 5 comments | |
|
|
Eric Gade
2022-04-04 14:02 #
Anyone here know about in-browser ML tools for building models using images? In this case, we'd like to annotate ("draw" where relevant lines are present) some subset of an image corpus to build a model, and to do so interactively, feeding this training data into some easily configurable NN tool. Is there anything like this that is simple from a UI point of view? |
| 8 comments | |
|
|
Mark Dewing
2022-04-03 11:33 #
I'm interested in using call graphs/control flow in a hierarchical way to understand programs better. The problem is there seems to be two extremes - high level diagrams done manually and low level call graphs generated by tools. A manual drawing with boxes and arrows is often used when describing a program at the highest level. While it works, one question is how to move to the next level of detail? Someone has to do that manually as well. These diagrams aren't connected to the source and can get out of date. The structure is going to change slowly at the highest level and so keeping up-to-date manually isn't that much trouble. More detailed levels, though, can change more frequently and keeping them up-to-date is more work. At the other extreme, tools to generate callgraphs give all the functions. They can filter by time, number of calls or call stack depth, but those doesn't necessarily correlate to what's important conceptually. I'm wondering if there's any work on anything between these two extremes? Both in generating it and visualizing it. (Searching online for 'hierarchical call graph' gives research on automated and machine learning approaches to discovering a hierarchy - interesting as research, but not what I'm after here. I would prefer something manual like adding program annotations or creating filtering terms - something that can be automated as part of a build or CI process.) |
| 3 comments | |
|
|
Mariano Guerra
2022-03-31 02:30 #
Is there a "grammar/pattern/algebra of parser combinators" somewhere? Something that describe the common parts that most parser combinators have, choice, iteration and so on |
| 4 comments | |
|
|
Deepak Karki
2022-03-26 19:20 #
I recently came across this interesting piece of programmable tech : https://www.youtube.com/watch?v=ip641WmY4pA Other than capturing my attention for being an interesting product, it got me thinking of new hardware extensions (or complete systems) that would enhance/change the coding experience. We always discuss what kind of digital UIs would make programming simpler and more intuitive, so I was wondering if someone has looking into new kind of hardware I/O which would change how we program today. In fact new hardware could spur new mental models and digital interfaces for programming! (Think of how a mouse / touchscreen is central to something like Blocky/ MIT Scratch). I have no experience in this field, just wanted to get a discussion going and see if someone with a bit more familiarity could chime in! |
| 4 comments | |
|
|
Orion Reed
2022-03-25 05:38 #
Been thinking today about “handoff mechanisms” and how they're essential in networking/communications infrastructure, but we don't have a similar notion in software (that I know of). This came up while working on an Obsidian plugin to replace the built-in “graph view”. One of the design constraints was that it handles different scales appropriately, from deterministic approaches at small scales -> physically simulated at medium scales -> probabilistic/heuristic at large scales. I didn't want there to be any modes and I wanted there to be consistent observed behaviour, so I started referring to this as “pixel-perfect handoff”. It's made me wonder what else there is to explore here. Imagine interface systems that are able to switch backends without you noticing; tools that can be “dragged” into other software which appear to continue uninterrupted; data transformations switching to faster approaches when the context allows. What other examples might there be? Where else could this idea go? What infrastructure could be developed? Is this just another lens on interoperability, or something else? |
| 3 comments | |
|
|
Mariano Guerra
2022-03-24 13:39 #
Do you have any example of a UI Widget type created in the last 20 years? (like slider, select, radio button, checkbox, things you would have on a UI builder palette) |
| 17 comments | |
|
|
Mariano Guerra
2022-03-24 13:36 #
What are the most interesting uses of outliners you have to share? |
| 2 comments | |
|
|
Nick Arner
2022-03-23 15:14 #
Can’t stop thinking about how much I wish I could do this with my IDE (in my case, almost exclusively Xcode): https://twitter.com/nickarner/status/1506318043697217536?s=2… |
| 9 comments | |
|
|
Orion Reed
2022-03-17 06:53 #
In a future where the user-programmer divide disappears, what new language might we develop to talk about people in relation to computers? |
| 10 comments | |
|
|
Henning Sato von Rosen
2022-03-16 02:24 #
Hi all, I wrote down some thoughts on colorless async. See below! I’m not experienced in use of go-routines etc; I write from a language design perspective and, yeah so; I might be totally wrong/have mis-conceptualized something. I’m in a process of learning to think about this stuff and would be delighted to have feedback/think together about the topic of designing async into a language! --- Colorless async seems obviously great, but what if the opposite is also true? I read this blog post What Color is Your Function?? on ways to integrate async into a language. It’s an entertaining and convincing read by a super experienced developer. The article leads you through a chain of very obvious thoughts, that you cannot imagine even wanting to contradict; ending up with the understanding that the best solution is to enable using sync and async functions interchangeably, e.g. by supporting go-routines. I was totally convinced. But then I thought, what if you go all the way in the other direction, embracing that sync and async are so fundamentally different in their semantics. What it that difference was present on the language level, in stead of being hidden by magic? This has been done many decades ago and with superb usability results, in the form of state machines and most notably statecharts. “Red” (sync) functions are transitions. “Blue” (async) functions are states. Thinking of them and visualizing them as distinctly different is a game-changer for the human mind: A top-down understanding can be conveyed to non-programmers and programmers alike, etc. In the typical visualization, sync stuff is not “red functions”, they are arrows. async stuff is not “blue functions”, they are rectangles. Arrows and Rectangles composes perfectly, because of their differences. It’s hard to see what’s gained conceptually by merging arrows and rectangles into one thing. |
| 49 comments | |
|
|
Jason Morris
2022-03-13 17:40 #
Has anyone seen anything that attempts to make coding conversational? Where the environment is given a goal, and queries the user for what it needs to achieve that goal, incrementally? |
| 45 comments | |
|
|
E. Lop
2022-03-11 07:28 #
What are the programming tools that are not made using text files ? Is there any recent one ? edit : by text file I mean anything that feels like a text file to the user editedit : I mean that it's the programming tool itself that's not implemented using text files |
| 34 comments | |
|
|
William Taysom
2022-03-08 20:23 #
Really noticed a difference in priority between professional and end-user programming this week. Where the pro may have reason to optimize performance of a computation, an end-user wants to optimize time-to-answer. At the end of the day, a 10,000x performance hit of doing the first dumb thing that comes to mind is fine since you can leave it running run overnight. On the other extreme, when superior performance gives you answers as fast as you can pose questions, you can potentially start asking in a qualitatively different way. It can get downright silly, "let the machine ask the questions while we figure out how to filter the answers." (I guess this ties into the data/information conversation.) |
| 2 comments | |
|
|
Nick Smith
2022-03-07 05:16 #
My challenge to #thinking-together: try and come up with a precise definition for the term data or datum that isn't equivalent to one of these two notions: • information • objects (more precisely: physical objects or abstract concepts, such as "the number 3", "an electrical charge", "a cat", or "capitalism") I contend that this cannot be done :upside_down_face:. Most distinctions that people try to make between "data" and "information" either fall down under light scrutiny, or reduce "data" to the role of an arbitrary object. (Consequently, I've come to believe that the term "data" causes more harm than good, since we could instead be using terms with broadly understood meanings.) |
| 38 comments | |
|
|
Orion Reed
2022-03-05 06:53 #
I’ve been thinking about text recently — as many here often do :stuck_out_tongue: Something that comes up a lot here is that we represent things with text, building atop it as a kind of “lower level” representation. For this to work, there needs to be some degree of coordination and communication in how these lower level representations should be interpreted. When digital text first emerged it was standards organisations who made these coordination decisions and they were able to convince or compel other groups to normalise around their decisions. This had limits even back then — see the history of the USA, ASCII, and non-english-speaking world for examples. The computing landscape today is radically different, and it seems unlikely that similar approaches would succeed. So my question is as follows: If we want to someday go “beyond text” as it currently exists, or build other low-level representations, is this even conceivable today without addressing that low-level coordination? As in, perhaps the only viable way forward is to enable the collective development of these systems of representation. This puts the challenge of (general purpose, low-level) representation firmly into the space of distributed systems, socio-technical systems, digital governance, coordination, communication, etc. I’m looking to sharpen my thinking here, all thoughts welcome! |
| 9 comments | |
| # |
Chris Knott
2022-03-04 01:08 #
Once you learn a syntax fully, it can become impossible to empathise with people who find it confusing. This tweet really shook me out of that. It's a difficult problem to solve because anyone in the position to even think about new programming languages is already going to have all these calcified brain pathways that really distort their thinking. |
| 11 comments | |
|
|
Orion Reed
2022-03-03 11:30 #
What do y’all think about config files, ‘option menus’ and settings? Especially interested in papers/writing that explores these things, and the ways we may be able to rethink them, or abolish them altogether. |
| 7 comments | |
|
|
E. Lop
2022-03-02 11:16 #
Hello everyone :DD little question: would you understand it if I used the word 'informing' to say 'programming' ? What would be your reaction ? and 'informing computers' when out of context |
| 9 comments | |
|
|
Steve Dekorte
2022-02-28 10:59 #
I've noticed that most visual programming projects seem to be focused on new (and often unintentionally more difficult) ways to build traditional difficult to use end user apps, instead of making frameworks that help make end user apps themselves easier to use. Might it be more productive to work backwards from making life better for the end user as the path towards better developer tools? e.g. "We want end users to be able to do X, Y, Z in all situations, so what tools do we make to get there?" |
| 8 comments | |
|
|
Kartik Agaram
2022-02-26 11:34 #
https://yakcollective.mirror.xyz/aJdO_SO3gw34cLtwBwNC2OD3s0YT3us9C-C2NNPQ_us may be interesting to some people in this group. It's arguably off-topic for this group, but there is a fig leaf: Ivan Illich is one of the targets of commentary, and seeing his work embedded in a state space gave me interesting context and perspective on Tools for conviviality (http://akkartik.name/illich.pdf) |
| 5 comments | |
|
|
Jason Morris
2022-02-25 09:47 #
Blog post yesterday about coders getting frustrated with over-reliance on no code tools. https://jasonmorrissc.github.io/post/2022-02-24_no-code/. thoughts welcome. |
| 13 comments | |
|
|
Mariano Guerra
2022-02-25 01:35 #
is this community New Jersey, MIT Style, both or none? |
| 5 comments | |
|
|
Orion Reed
2022-02-22 10:15 #
I’d really love to know if anyone knows of literature on generating examples in mathematically robust ways. It’s hard to search for literature on this because of how Google interprets the query. I know there’s work here in formal language theory, as it’s usually straightforward to generate a sentence given a formal grammar. But I really want to know what work has been done in a more general context of mathematical structures. Questions like ” what is the simplest example of structure X” or “smallest example that can be differentiated from the others” or “simplest counter-example”. I know there’s work on example-driven programming and the like, which I assume would have some relevance, but I’ve had no luck finding much. I just have to assume that this is a question that some mathematicians somewhere have asked before. |
| 15 comments | |
|
|
Mariano Guerra
2022-02-21 07:19 #
Interesting thread and discussion topic: > Most visual programming languages make limited use of the visual channel — the program structure is represented visually, but not much else. Usually the shapes and colors they use have an abstract (symbolic) meaning, not a concrete one. What are some different approaches? https://twitter.com/dubroy/status/1495766614377058305 |
| 6 comments | |
|
|
Andreas S.
2022-02-20 02:50 #
Hey :wave: Future of Coding, reading this: https://www.yakcollective.org/about/ and this https://yakcollective.mirror.xyz/aJdO_SO3gw34cLtwBwNC2OD3s0YT3us9C-C2NNPQ_us What do you think, how similar is the yak collective to future of coding? @Ivan Reese |
| 6 comments | |
|
|
Orion Reed
2022-02-19 05:50 #
The notion of provenance gets used a lot where I work, it’s a great term which (roughly speaking) refers to the lineage of data. Provenance documents the inputs, entities, systems, and processes that influence data of interest, in effect providing a historical record of the data and its origins. The term is probably worth a discussion on its own, but my question to y’all is this: Where provenance charts the history/past of data, is there a term that refers to its future, such as possible transformations, movement, etc, etc. My mental model here is something like a light cone where provenance defines a specific path within the possible histories of the data, its counterpart would define the possible, or probable future path. I’m mostly just looking for a good term because I think it would be useful, I’ve been trying to mush different etymologies to find something that sounds okay but nothing great has come out of that yet. I’m not expecting there to be much work on really developing the notion concretely, but if there is I’d certainly love to know about it! |
| 14 comments | |
|
|
Nick Smith
2022-02-19 01:56 #
Does anyone know when the term "schema" was first used in computing (e.g. "database schema")? It has an interesting (and related) meaning in psychology, which seems to predate the term's use in computing. |
| 12 comments | |
|
|
Mariano Guerra
2022-02-14 04:25 #
Do you know of any tool that helps to make Excel better? Tools like this https://www.formulaboost.com/parse?f=%3DIF(A1%3C10%2CSUM(B2%… |
| 6 comments | |
|
|
Janne Aukia
2022-02-11 03:50 #
I’m designing an UI for adding blocks in visual programming (similar to Scratch) without having to drag-and-drop, and wondering if there are any good ideas in other tools. Any block or outline UI:s for visual programming that handle keyboard navigation and/or focus caret (edit point) well? |
| 15 comments | |
|
|
Denny Vrandečić
2022-02-10 14:09 #
Computer science and programming doesn't seem to have a popularizer, like many other sciences did: Carl Sagan or Neil de Grasse Tyson for Astrophysics, Steven Pinker for Linguistics (whether you like the person or not), Bertrand Russel for Mathematics and Philosophy, etc. But there is so much fun stuff to tell and show. Does anyone know someone or some place that comes close to such a goal? |
| 14 comments | |
|
|
Yousef El-Dardiry
2022-02-03 01:40 #
Just helped out a friend with a Wordpress website.. Always feels like hacking a big bunch of spaghetti with add_filter etc. but in the end it kind of works and Wordpress is quite end-user (or in this case “admin”) modifiable. • What do you think of Wordpress’ add_filter and add_hook system (combined with overridable files) for plugins? • Do you know of apps with a better plugin system? Where plugins can still easily modify both core functionality, and functionality from other plugins? Tips for resources on designing highly modifiable systems? |
| 2 comments | |
|
|
Mariano Guerra
2022-01-31 11:25 #
is there any datalog implementation I can use from a browser? how datalog-y can I get with a graph database or RDF? |
| 8 comments | |
|
|
Mariano Guerra
2022-01-31 11:24 #
what's the best "thing" you have seen/read to turn a tree into a table? something like jq visual things more than welcome |
| 11 comments | |
|
|
David Brooks
2022-01-30 20:51 #
Hello there. I've been dreaming for years about a 2D spatial interface for laying out and editing / manipulating files in a filesystem (something like a local miro for my pc). I've recently attempted to build something using https://github.com/anvaka/panzoom which is great, but I'm pushing it beyond its limit, I think (or my own). I want a solid, intuitive (google maps-like) rendering and interaction to build off of. I mainly program in and prefer web technologies. But if there is something like panzoom for python or java or something, I'll do that instead. Does anyone have any recommendations? panzoom is the closest library I've found that is generic enough and flexible enough to do what I want, but I'm running into bizarre problems with it that I just don't want to deal with. Any recommendations for other libraries would be very appreciated! Thanks :slightly_smiling_face: |
| 12 comments | |
|
|
Dalton Banks
2022-01-30 20:29 #
beautiful take on novelty in science i think many of us will relate to novelty as ‘complex, difficult’ vs novelty as ‘breathing for the first time’ https://perceiving-systems.blog/en/news/novelty-in-science |
| # |
Jason Morris
2022-01-26 09:30 #
Seeking feedback on a rough interface prototype: |
| 31 comments | |
|
|
Denny Vrandečić
2022-01-24 11:59 #
I think something similar is going on with graph representations of otherwise linearly encoded texts, be that knowledge graphs, ontologies, or programming code. The idea that we spread out these more or less one-dimensional beasts into two dimensions, or even three, is deeply appealing to us, even though we haven't seen as much impact with the actual current results of this line of work. So thinks like UML diagrams, Vlojure, Scratch speak to our desire that they should be awesome. Just because it is a much better fit to our capabilities. |
| 3 comments | |
|
|
Denny Vrandečić
2022-01-24 11:56 #
Just a half-formed thought: in the following tweet, the developer has mapped foot pedals to some modifier keys, so she uses one pedal for alt-tabbing, one pedal for control, one for shift, etc. But notice how giddy and happy she is presenting that? My guess is that the fact that even a little bit more of our body is used in our day to day work, which is usually just the fingers and hands, would make us giddier and happier. https://twitter.com/TaliaRinger/status/1485681422069346305 |
| 2 comments | |
|
|
Dalton Banks
2022-01-24 07:22 #
oh god the hamburger icon was a Xerox PARC innovation https://www.xerox.com/en-us/insights/user-interface-examples |
|
|
Matthew Linkous
2022-01-19 13:07 #
How do you think software could be designed and developed differently if everyone person on the internet had their own personal server? Anyone built any apps designed to be exclusively self-hosted? What could that mean for the future of SaaS? |
| 7 comments | |
|
|
Dalton Banks
2022-01-18 07:43 #
A few shower thoughts on AI and end user programming. • I imagine this group is more averse to AI research compared to baseline in tech/CS. The following comes to mind: ◦ Most algorithms today tend to be pretty opaque, whereas we value understandable systems. ◦ Current end user systems (e.g. Alexa) are super frustrating when they don’t give you what you want, since their behavior is hard to manipulate. ◦ There’s an uneasiness about AI systems replacing the things we DO want to control; we value systems that put people in control. ◦ There’s little value for human intuition in most current AI research, with some notable exceptions below. • The deep learning gold rush has created a situation with interesting analogies to the “programmer/end user” dichotomy. Researchers who develop the expertise to design deep learning systems tend to “think in deep learning” to the exclusion of better suited approaches in some contexts, while those without a deep understanding have little ability to modify their systems. • Going further with this, two of the most interesting researchers right now IMO are François Chollet and Josh Tenenbaum, both of whom see program synthesis as the key to advancing AI in a more interesting and useful direction. There’s a parallel with the popular “Type I/Type II” thinking analogy: deep learning is great for Type I thinking (pattern matching, interpolation, “geometry”), while there hasn’t been much progress yet with Type II thinking (generalization, planning, “topology”). The idea is that you need both: a perception layer that goes from continuous to discrete, and a “programming” layer to work with the results. A recent example of program synthesis is DreamCoder. • IMO we’re about to see all the wrong assumptions that are encoded in current software systems recapitulated in this new trend in AI research, since these efforts will use existing programming languages for the program synthesis component (DreamCoder uses a lisp). I think there’s an opportunity for our group’s way of thinking to improve on the “program synthesis” part of the pipeline. • Chollet’s “Abstraction and Reasoning (ARC)” paper and challenge is to me a very clever and appealing illustration of the limitations of deep learning and the potential of program synthesis. ◦ One “big idea” is to optimize for generalization by limiting the number of training examples available to an algorithm. • “Building Machines that Learn and Think Like People” is another nice intro to this direction in AI research, linked in this rather delightful essay. • Lick’s Man-Computer Symbiosis paper from 1960 is as fresh as ever (not to mention The Computer as Communication Device). • If this is all too nebulous, Chollet’s NeuroIPS talk (the first 40 min) is a nice crisp intro. Interested if anyone else is thinking about these topics. |
| 20 comments | |
|
|
Dalton Banks
2022-01-17 10:42 #
Finally read The Dream Machine which was soooo good. I found the writing a bit of a slog, but the research is gold. Curious how many here have read the whole thing? Had no idea Lick was all about modeling. :slightly_smiling_face: I also just discovered “The Illusion of Life: Disney Animation” which is blowing my mind. The two are fun to juxtapose. |
| 7 comments | |
|
|
Paul Sonnentag
2022-01-16 11:29 #
I’ve been obsessed with the question of how the future of coding might look like for a while, and I’m at the point where I have to ask myself if I’m actually progressing or just jumping from idea to idea. I was initially motivated by the vague feeling that something about software development today is wrong and that there has to be a better way. My working hypothesis was that programming is too complicated. If we made it more accessible, everyone could create precisely the tools they need to solve their problems. Is this true? If we gave everyone the ability to program overnight, very little would change. People still couldn’t quickly build tools to solve problems. I know this because I currently don’t use any tool I’ve created for myself. Most of the time, it’s just not worth it to build a tool for myself. Making programming easier isn’t sufficient to create an ecosystem of DIY tools. The shape of the artifact that we produce when we program has to change as well. The next question is: Do people even want to create their own tools? The answer is most people probably don’t. B Nardi [1] surveyed how people use applications that support end-user programming like spreadsheets or CAD software. What she discovered is that most people only used basic features. If they wanted to do something more advanced, they relied on the few people on their team (10 - 20%) that had an intrinsic interest to tinker with computers and read manuals. She called these expert users local developers because they helped raise the technical sophistication of everyone by supporting their colleagues with questions and by sharing macros or formulas that they’ve created. We can see the emergence of local developers also in the no-code movement. There are now dedicated agencies that focus purely on creating no-code applications [2]. My initial hypothesis that we have to make programming easier was naive and too focused on the creation process. In the future, I want to focus more on the shape that applications should have once they are built. So, for example, I’m less interested in finding more user-friendly abstractions than the EXCEL formula language. Instead, I want applications that you can take apart into recombinable parts. How could a tangible building material of information software look like? • structured search • drag and drop of data objects How to address the different classes of users of the system? • A base material that is useful without programming • A framework for developers to create domain-specific components • A glue language for local developers to recombine the components [1] https://mitpress.mit.edu/books/small-matter-programming [2] https://nocodeagencies.com/ |
| 20 comments | |
|
|
Mariano Guerra
2022-01-14 02:58 #
> How come the thinking tools community doesn't seem to draw much inspiration from Wolfram? It's literally a tool for thinking mathematic and scientific thoughts. https://twitter.com/iamwil/status/1481694811547521025 |
| 5 comments | |
|
|
Kartik Agaram
2022-01-13 17:38 #
Which of https://sdgs.un.org/goals does your project aim at? It can be as indirect as you like (they're all hard problems) but pick just 1. |
| 10 comments | |
|
|
Andreas S.
2022-01-08 14:04 #
I like this piece: https://moxie.org/2022/01/07/web3-first-impressions.html in his conclusion he points out: "We should try to reduce the burden of building software" Go Future of coding ^^ |
| 19 comments | |
| # |
Deepak Karki
2022-01-06 23:06 #
21 Questions for the new year (by Philip Guo via private newsletter) Discovery-Based² Software Development • How do people write code to make novel discoveries by, say, analyzing data or building prototype software?³ • How do people manage ad-hoc data sources (e.g., using lightweight file formats rather than formal databases) when exploring data or prototyping software? • How do research programmers deal with environment setup and upgrade issues? Follow-ups: Are these complexities due to the decentralized nature of open-source ecosystems that many researchers now work in?⁴ Or is there something inherent to software that makes environment issues unavoidable?⁵ • How do programmers debug across multiple programming languages and independent distributed components (e.g., on cloud-hosted services)? • What are the tradeoffs involved in maintaining long-lasting open-source software, especially within research lab settings where resources are scarce? Learning Code, Data, and Environment • How do novices struggle with setting up and configuring software environments before even getting to write their first line of code, and how can instructors alleviate these struggles while still providing a realistic experience? • What are the emotional and psychological barriers that prevent novices from proactively just trying things out on the computer, observing what happens, and learning from those firsthand observations? • How do TAs and students interact during tutoring sessions for learning programming and data science? • How can visualizations help teach programming and data science? (Follow-up: and how can these be extended to teach modern machine learning concepts?) [Sample visualisations attached as files.] The Hidden Curriculum • How can we teach students the Hidden Curriculum of unwritten rules and unspoken norms required to succeed in college and launch their careers when these nuances are never taught in the official curriculum of formal courses? • How can we help graduate students and junior researchers navigate the hidden curriculum of unspoken rules when starting up their academic research career? • How can we help international students, those from low-income families, and those from different cultural backgrounds than the dominant norms to navigate the hidden curriculum of university life and their early professional careers? • How can adults find trusted mentors without potential conflicts-of-interest after they are no longer in a formal school setting? (e.g., typical work mentors such as one’s manager and coworkers may have hidden conflicts-of-interest) • How can mentors create environments with good scaffolding and psychological safety to help junior colleagues “fall into the pit of success”? Tacit Expert Knowledge • How can we draw out experts’ tacit (unspoken) knowledge about their work practices so that novices can learn by (virtually) looking over their shoulder? • How can we capture experiential knowledge (e.g., how it feels to be doing something) and share it with relevant people in authentic and relatable ways? • How can we encode tacit expert knowledge into AI tools (e.g., GPT-3 and other large language models) and present it to novices in a format that’s the most timely, relatable, and helpful? Creating Online Content • How can we encourage people to share creative content with a receptive and targeted audience without the noise and unpredictability of public online posting? • How can sub-one-minute videos be used for education rather than just for endlessly-scrolling mindless entertainment? • How can we quickly capture insights in “one take” without needing any post-processing? e.g., with in-camera video production tools, real-time screenshot and screencast interactions, or AI scaffolding to encourage creative writing⁶ • How can we make video editing as simple and intuitive as photo editing? --------- superscripts key 1 - not an accurate number 2 - As opposed to “product-based” software development to create mass-market products. 3 - Most of these questions will likely lead to me asking: And how can we improve upon the status quo of how things are being done here today? 4 - For a hot take, check out Why Wolfram Tech Isn’t Open Source. 5 - I tried not to pile on follow-up questions but couldn’t resist here. In fact, all of these 21 questions could generate more detailed follow-up questions. 6 - It’s also bad to prematurely suggest solutions when posing open-ended questions, but again I couldn’t resist. |
| 3 comments | |
|
|
Dalton Banks
2022-01-05 05:27 #
I’m struck by how rare it is for basic control systems knowledge to show up in our projects; my impression is that the common approaches to closed loop feedback are: • Ad hoc event handling and state management • An exercise left to the user • ‘I’m sorry dave, I’m afraid I can’t do that’ I think we tend this way because the underlying substrates (CPUs, peripherals, ISAs, PL grammars) are so well characterized as to allow formerly unthinkable consistency with open-loop methods. It seems like there’s a lot of low hanging fruit here, and it gets at the heart of what ‘liveness’ is about. I’m curious if anyone here has experience working with controls/dynamical systems, or pointers to FoC type projects being approached in this way. PS if you’re not familiar with controls, a wikipedia trip makes it seem like a lot of daunting math, but the basics are actually pretty simple. Basically you’ve got your current system state, a function to compute the next state, and then whatever parameters you can actual directly control (“direct manipulation”). If you’ve ever used React or FRP, they get halfway there, then overcomplicate and oversimplify it at the same time. Here’s a friendly intro if you’re curious: https://www.youtube.com/watch?v=O-OqgFE9SD4. |
| 9 comments | |
|
|
Andreas S.
2022-01-03 04:15 #
A quick "thinking together" question for @Jack Rusher regarding clerk, I recently found this article and was reading about queries there: https://www.metoki.ch/wissensmanagement-mit-logseq-vielversp… (apologies for being it a german article )I always wonder, like how far is clear away from logseq or any other base functionality of a Personal Knowledge System? |
| 1 comments | |
|
|
Henning Sato von Rosen
2021-12-31 13:19 #
Hi all; :fireworks::fireworks::fireworks: Happy & Inspiring New Year !!! :fireworks::fireworks::fireworks: • ( A ) What are some ideas/things/projects you would like to ponder/explore/learn/prototype/build in 2022? • ( B ) Same question, assuming 2022 were a sabbatical with free time & resources & ample collaboration available? |
| 11 comments | |
|
|
Deepak Karki
2021-12-27 10:59 #
Has anybody read this book? Reviews? https://press.princeton.edu/books/hardcover/9780691164069/opt-art > Linear optimization is a powerful modeling method for discovering the best solution to a problem among a set of available alternatives. It is one of today’s most important branches of mathematics and computer science—and also a surprisingly rich medium for creating breathtaking works of art. Opt Art takes readers on an entertaining tour of linear optimization and its applications, showing along the way how it can be used to design visual art. |
|
|
Srini K
2021-12-21 15:29 #
My answer to this question got to the top of the thread: https://news.ycombinator.com/item?id=29625625 It was a hurried response for sure, but I guess it was still a nice reminder |
| 11 comments | |
|
|
Deepak Karki
2021-12-21 12:51 #
https://news.ycombinator.com/item?id=29590681 > Ask HN: How would a programming language look if designed by non-programmer > Since it’s hard to find such a person, who understands CS/Math/can program machines but never used “normal” programming languages > I do wonder how it’d be designed, maybe current approach sucks? > OOP is beautiful itself, it enables normal people to model complex systems that’ll be running on computers, but can we get even better? |
| 2 comments | |
|
|
Matthew Linkous
2021-12-20 08:00 #
In Unix everything is a file which makes allows simple, reusable tools like ls, cd, cat, etc to be used across the whole system. However, files have their drawbacks as well: primarily that they're difficult to merge or detect changes which is useful for syncing, collaborating, and/or subscribing to data. Has anyone seen any alternatives to this paradigm? My startup is currently exploring the idea of append-only logs as our core primitive instead of files. We're not building a new kernel but we're attempting to create a new programming environment with collaboration and reactivity as core tenants. Would love to hear other perspectives on the subject! |
| 10 comments | |
|
|
Doug Moen
2021-12-19 20:20 #
This is a question about writing compilers. I need to design an IR. Mine is for a pure functional + imperative language. What currently seems popular is SSA with block parameters, not phi nodes, which at least handles the imperative side of my language. My special concern is supporting efficient compile time evaluation (as well as partial evaluation). I guess I want the IR to be a compromise between supporting a fast interpreter (for compile time evaluation) vs supporting conventional compiler optimizations. Does anybody have experience with this? |
| 2 comments | |
|
|
Kartik Agaram
2021-12-18 07:44 #
I just remembered this fun bit of scifi about an alien computational universe http://akkartik.name/post/wangs-carpets cc @Dalton Banks @Srini K who've expressed interest in computation as simulation (1635811447.034700.html; ../administrivia/1.639608.html…) |
| 4 comments | |
|
|
Breck Yunits
2021-12-17 13:35 #
Does anyone have recommended reading (books, papers, articles, Wikipedia pages) on the topic of "Types of thoughts"? Other ways to put it might be "Ontologies of Thought" or "Templates for Thought". Rhetorical devices would be a subset of the broader category I'm thinking about. I'm looking to add to a grammar nodes for thought patterns like "Playing Devils Advocate" or "Thought Experiments" or "Listicles" or "FAQs". |
| 9 comments | |
|
|
Henning Sato von Rosen
2021-12-16 01:16 #
#language-design-philosophy A data structure that’s orthogonal at its core? Why is that so hard to think of? Why is there such a strong tradition in CS/PLD to think in composition by nesting but not of orthogonal composition? What if we (language designers, at least) are missing something here? Why do I post such an underspecified topic? I think there is little doubt that perceiving orthogonally is a fundamental feature of human cognition, and that current language design fails to support this. And, yes, I don’t even know how to argue for this. This may be frustrating to try to think of. I must admit; I’ve learned to appreciate the feeling that there does exist something, that it must exist, but I can only just almost try and grasp it. What do you do in similar mental configurations? Grab a whiteboard? Begin writing an essay? Write some code that assumes the thing exists in order to reach your intuition for it (“air coding”)? Your.. + thoughts on this experience + ideas for an attack on this problem .. are welcome! :slightly_smiling_face: :heart: |
| 10 comments | |
|
|
Tom Larkworthy
2021-12-14 22:13 #
Hi it came up in @Nick Smith community meeting that it's hard to figure out: what represents the groups contemporary thought or greatest hits. Slack can be a bit ephemeral, so is there a way of surfacing and curating info for longer? @Orion Reed suggested using emjoi reactions as a signal to direct a slack bot. I see this same problem in the Observable community where the best notebooks get lost after they fall off the /trending page. People are individually curating "amazing notebooks" collections but individuals run out of impetus at some point so the efforts are patchy. I have been thinking about solving this for the Observablehq community for a while. Some kind of system to submit URLs to notebooks and a way of tagging them -> leaderboard with voting dynamics. Its basically reddit but scoped to a single domain. I do not have a good handle on the details though, how to incentivize long term content (vs reddit which is very churny) Anybody got any other ideas or inspirations. Community curation seems like a common problem. Is there a solution? Does someone want to give me direction on what they would like to see? |
| 9 comments | |
|
|
Deepak Karki
2021-12-14 14:13 #
Is there a curated list of university / industry labs working on “tools for thought” or “end user programming”? Basically tools that help people - gather & disseminate information, structure knowledge and create things! This would include things like - Muse, Coda, Notion, tools to explorable explanations, new programming languages & environments, rapid prototyping / end user tools, visual debuggers and observability, code walk through tools, github copilot, tools to create media (like 3blue1brown’s Manim engine), Information foraging & discovery tools (inciteful, connected papers, litmaps), etc |
| 7 comments | |
|
|
Andrew F
2021-12-13 05:26 #
I finally got my list of high-level goals in semi-presentable shape. I'm most interested in feedback on whether they make sense from a communication standpoint, but also which parts of them sound feasible (there are a few, even ones not marked "stretch", that I have a feeling will not be possible). If nothing else, maybe they inspire you, contrast interestingly with your own goals, or whatever. I've just pulled out the very high-level philosophical goals from my list, plus some terminology that I use weirdly. The full doc has a lot of technical ideas, but it's still, um, raw. I'm not sure about what I linked here but the rest definitely reads more like an insane screed. https://gist.github.com/andrewf/c6774d1bc8ad793b4b3e3172ba13f6b0 (Oh, about the title: "Fern" has been my codename for this project for a good ten years. If you stalk my github you'll see some of my first-ever attempts. :smile:) |
| 10 comments | |
|
|
Henning Sato von Rosen
2021-12-09 02:39 #
Dear all, let’s do some #thinking-together about a really simple idea that I find irresistibly non-complected, but might well be partially or totally flawed or just a reformulation of something else; but hey! for the duration of this post, lets cast doubts aside and enter creative mode; exploring the idea as if building just another mind-blowing creation in Minecraft :slightly_smiling_face: : Any static web page as well as every dynamic UI in the browser or anywhere, can be seen as an _orthogonal combination of embodiment and essential state_. Let’s call such a combination a layer. (Think of state the values and embodiment as rendering/timers/event-handlers etc). Here’s the problem it is aimed for solving: State composes perfectly with state, embodiment composes perfectly with embodiment; but when we mix state and embodiment, complexity explodes exponentially; we can no more distinguish between them, no more extract and model the state explicitly, visualize it, generate tests based on it etc and for every new part or feature, technical debt is amassed and the complexity quickly skyrockets into levels that not even the most skilled designers and developers can handle. So back to the really simple idea: Let’s keep it orthogonal; let components be expressed in an orthogonal way, let’s composition propagate orthogonality. What follows from it? How can we model it; can we being to imagine a Layer Machine formalism? A layer machine markup language? Make an enlightening run-time visualization? Can we implement it, and in how many LOC?; can we use it to explore its PL usability factors along some cognitive dimensions? What new ideas can we form based on that experience? |
| 8 comments | |
|
|
E. Lop
2021-12-08 12:02 #
Do someone know about something that uses an alternative to rendering trees ? |
| 6 comments | |
|
|
Henning Sato von Rosen
2021-12-06 04:11 #
Hi all, anyone else here that’s a fan of Rich Hickeys thinking on language design? Please comment with your main take-aways! I’ve found his talks a treasure trove and his approach to go back to deep philosophy and fuse it with hard-earned dev experience a great inspiration! Here’s a link to a bunch of transcripts for those in the enviable position to not yet having devoured all of them :heart: https://github.com/matthiasn/talk-transcripts/tree/master/Hickey_Rich Disclaimer: Obviously no one claims Hickey, including himself, invented all of the stuff he talks about, but his way to concretize, make use of, make understandable the stuff is just something appreciate deeply and learned a lot from. |
| 8 comments | |
|
|
Nick Smith
2021-12-05 22:01 #
Has this community ever agreed on some "big problems" in programming language design? Having recently gone back to think about "big picture" things, I've realised I have no idea what other people think is important. Surely there are a couple of historical threads. It would be a little awkward if after several years of having this Slack group, we've never collectively stopped to define the problems we're working on. |
| 40 comments | |
|
|
Andreas S.
2021-12-04 07:35 #
Hey :wave: I came across this: https://twitter.com/jessewldn/status/1321239372449153024?s=21 inside this: https://variant.mirror.xyz/T8kdtZRIgy_srXB5B06L8vBqFHYlEBcv6ae2zR6Y_eo What do you think about this file analogy? |
| 7 comments | |
| # |
breck7
2021-12-02 14:19 #
Does anyone remember that person who came up with the font where you would rotate and stack the zeros vertically, like the image below? I can't remember what it was called and am struggling to Google my way back. |
| 6 comments | |
|
|
Henning Sato von Rosen
2021-11-27 06:38 #
Hi all; I'd like to use Literate programming in Visual Studio Code for js. Anyone doing that? E.g Plug-in recommendations would be appreciated. Ideally I'm looking for something with a subset of similar features to what [@Chris Granger] Chris Granger did for Eve [demo]; Free source code ordering, ability to add some interactivity using the code itself etc, mix markdown and js. That should be pretty doable, don't you think? Thing is I've got a perfect use-case for literate programming in a current project; not much code, just a few hundred LOC, but conceptually heavy. So I'm not in need of any deep magic, it's enough if Literate Programming would: (1) help me understand my own underlying model. (2) Produce something useful to others wanting to understand the code/underlying model later (without extra work on my side :slightly_smiling_face: ). That would be great! Recommendations/ideas/experiences are super welcome! |
| 12 comments | |
|
|
Andreas S.
2021-11-25 05:15 #
Hello everyone! I'm curious in the sense of "thinking together" regarding this happening in the rust community: https://twitter.com/etorreborre/status/1463422189080915969?s=20 what are you throughts in it? Why is it happening within the rust community and more general? How much are programming languages influenced in terms of communicating culture by things like the culture wars? Looking forward to your thoughts |
| 2 comments | |
|
|
Kartik Agaram
2021-11-21 11:52 #
Immortal programs vs crash-only programs Immortal programs: http://steve-yegge.blogspot.com/2007/01/pinocchio-problem.html Crash-only programs: https://en.wikipedia.org/wiki/Crash-only_software In brief, immortal programs try to never, ever reboot. Crash-only programs are designed to always be able to recover gracefully from a reboot. There's a fundamental tension here, and I'm starting to realize I'm very definitely on one side of it. I like a neat desk, and am compulsively closing things (terminals, browser tabs, browser sessions) when I'm done with them. I prefer text editors to IDEs, vim to emacs, unix as my IDE rather than slime. I'd always thought of these as subjective opinions that were just down to my personality and past experience. But, upon reflection, I want to make a stronger case that "my side" is superior. 1. Focusing on recovering from reboots makes you better at simulating immortality. Restarts can in principle become instantaneous. Focusing on never rebooting makes you worse at recovering from crashes. 2. It's easy for immortal programs to end up in situations that are difficult to reproduce. I spent some time recently programming with @Tudor Girba's Glamorous Toolkit. Modern Smalltalk uncomfortably straddles the image and git repo worlds. The way you work is to make changes to your running image until you have something you like, then go back and package up a slice of your image into a git repository to publish. If you make mistakes, others can have trouble reproducing the behavior you created in your image. Testing if you did it right necessarily requires rebooting the image. Putting these reasons together, immortal systems are more forbidding to newcomers. Crashing becomes a traumatic event, one newcomers are not used to, something beginner tutorials don't cover. When things don't work, it's more challenging to ask for help. Creating and sharing reproducible test cases requires crash-recovery skills. Rereading the Pinocchio post now, I notice that there's actually no concrete benefits stated for long-lived programs. All there is are (compelling) analogies. A counter-analogy: an immortal program is like a spaceship. Once launched you're in a little bubble, stuck with whoever you happened to start out with. A crash-only program is like a little stone rolling down a hillside, gathering other stones until it turns into an avalanche. As I said above, I'm biased because of my experiences. I'm curious to hear from others with more experience of immortal programs. Am I understating the benefits, overstating the drawbacks? |
| 19 comments | |
|
|
Breck Yunits
2021-11-18 14:24 #
Does anyone know examples (or name of the pattern) of markup formats where instead of writing format directives inline <b>like this</b> you do it out-of-the-line like: text writing format directives inline like this |
| 14 comments | |
|
|
Sophie Smithburg
2021-11-16 08:33 #
(it's a thread, that's just the last tweet) |
|
|
Sophie Smithburg
2021-11-16 08:33 #
https://twitter.com/heartpunkk/status/1460646486371409920 |
| 8 comments | |
|
|
Konrad Hinsen
2021-11-12 02:49 #
A recurrent topic in this community is "Why do today's programming system so strongly rely on text files, and can we do better?" This tweet made me think of a possible answer: epistemic transparence (of text) vs. epistemic opacity (of data formats requiring more specialized tools for inspection). We have so many tools for inspecting text files that it's hard to imagine that someone could sneak in a tool that deliberately misrepresents the information in a file. Human-readable data encodings in text files thus provide acces to a shared ground truth. The tools intermediating between bits in memory and UIs (screens etc.) are so simple that they are easy to understand and easy to verify and validate. Even for relatively simple structured binary formats such as tar, this is no longer true. https://twitter.com/slpnix/status/1457642326956855296 |
| 27 comments | |
|
|
Andreas S.
2021-11-09 11:07 #
I came across this interesting tweet from @Chris Granger https://twitter.com/ibdknox/status/1458099415462318080?s=20 I do hope that with a focus of a tool connected to the web3 environment there is a chance to have a better discussion about what value acutally means. It is really a complex negotiation: how transparent should a tool be? How changeable to still gain traction? How can you as a creator help individuals to create value and or even groups? The larger PKM/Personalised Information trend we are seeing, I think is no fluke. People are trying to live the good live, it may start with having all your information or a reasonably size of it at your own disposal, for introspection. From these patterns can emerge : "Oh look I'm binge consuming information" - How do other people deal with this? Can I have a meaningful discussion about this with other people? Its a Meta Reflection on many levels and people navigate in their own ways towards it but I believe its really they are looking for "the good way of life". web3 is a huge as in humongous experimentation space, e.g. people thought prediction markets would work, but they didn't. They tried and are trying and will try crazy things. Its a very interesting substrate for stories and memes. (https://blog.simondlr.com/posts/infinite-stories-in-blockchains ) As such its as much about your "tool" what you will provide as it is about "the way" you will choose to interact with said ecosystem (token, voting, proposals, DAOs etc...) So in some sense people are in deed looking forward to have a conversation with you through the medium that is your tool and said "way" of interacting with people. Interesting times ahead for tools for conviviality :) |
| 11 comments | |
|
|
Felix Kohlgrüber
2021-11-02 13:06 #
Hi folks! It's been a while since my last post in this group, and it feels good to be back with some new FoC-related thoughts: I've been thinking about the tree structure of file systems recently and it turns out that they're limiting and require workarounds for relatively common use cases. Files contain data, but don't have children. Folders have children, but can't store data themselves. What if a file system had "nodes" that could store data AND have children? I've written a blog post about this and would like to hear your thoughts. As I'm not a native speaker in English and not really talented in writing, I'd be interested in feedback regarding the content as well as the general writing style etc.. Thanks in advance and looking forward to interesting discussions! https://fkohlgrueber.github.io/blog/tree-structure-of-file-systems/ |
| 5 comments | |
|
|
Dalton Banks
2021-11-01 17:04 #
A thought that’s been crystallizing for me is that the essence of ‘coding’ is modeling & simulation (not e.g. data and functions). These themes show up all the time in FoC contexts, but as far as I can tell they’re rarely the ROOT metaphors of a system. Of course there are plenty of examples in “real engineering,” what Alan Kay refers to as CAD<->SIM->FAB system. Do you know of examples of ‘convivial computing’ projects where modeling and simulation are the main event, or readings on the topic? What do you think of this premise? Here’s a recent Quora answer for more context: Does Alan Kay see any new ideas in computing? > “New” is not what I look for. “Ideas that make a qualitative difference over past techniques” are what I’d like to see. > > Years ago, I’m fairly sure I was aware of pretty much everything regarding computing that was going on in the world. Today, I’m definitely not aware of everything, so it’s reasonably likely that if there was something really great being done somewhere that I wouldn’t know about it. > > I would be most interested in learning about “qualitatively more expressive” programming that is more in line with top-level engineering practices of the CAD<->SIM->FAB systems found in serious engineering of large complex systems in the physical worlds of civil, electrical, automotive, aeronautical, biological, etc. engineering. > > In the CAD<->SIM part I’d like to see the designs understandable at the level of visualizable semantic requirements and specifications that can be automatically simulated (on supercomputers if necessary) in real-time, and then safely optimized in various ways for many targets. > > Isolating semantics in the CAD<->SIM part implies that what is represented here is a felicitous combination of “compact and understandable”. > > The FAB-part pragmatics are very interesting in their own right, and besides efficiencies, should be able to deal with enormous scaling and various kinds of latencies and errors, etc. > > The above would be the minimal visions and goals that I think systems designers within computing and software engineering should be aiming for. > > I’m not aware of something like this being worked on at present, but these days this could be just because I haven’t come across it. |
| 20 comments | |
|
|
Andreas S.
2021-10-29 03:52 #
Hello everyone :wave: Its probably due to facebook announcement, that I feel this topic gains attention. But I would be curious: What are your thoughts on the "Metaverse": https://www.youtube.com/watch?v=WJecbZWSbVs Exciting <=> Frightening? Indifferent? Especially from what we often discuss here the agency perspective, will this development lead to more centralization and more negative effects? Will it lead to better or worse - human relationships? Thank you! |
| 56 comments | |
|
|
Kartik Agaram
2021-10-16 21:44 #
Has the utterly brutalist approach to end-user programming ever been tried? Just forcibly package up apps with all their dependencies, along with all the tools needed to edit, build and run them? For a while now, we've had this notion of "end-user programming" in this community: the ability to modify software while we use it. https://futureofcoding.org/episodes/033.html by @Steve Krouse https://www.inkandswitch.com/end-user-programming/ by @Szymon Kaliski https://malleable.systems by @J. Ryan Stinnett is also relevant Here's a sketch for an MVP that provides this experience in the bluntest, most obvious way possible: • Download a framework packaged as a single file, including all necessary dependencies. You download it from an https URL, and that's it, you're good to go. • It only supports *nix platforms on desktop machines. Linux, BSD, maybe Windows Subsystem for Linux. Macs are explicitly out because they're basically not an open platform anymore[1]. And we're going to need an open platform for the sorts of stuff we're planning below. • You can install arbitrary apps from arbitrary sources that run atop the framework. The apps are in interpreted languages and always come with source code. • When you run an app, it always opens on the app first. This is important. There's no REPL or IDE front and center. The interaction modes are whatever the app chooses. • When you run an app, the framework always shows the privileges it has in some consistent part of the screen. The vocabulary and enforcement of those privileges is the major responsibility of the framework. Needing it to be always visible is why you need a desktop machine with a large screen. • The app can ask for privileges, but the framework gives you the ability to lie to the app. Here's a simulated network environment that looks offline or has these honeypots. Here's a simulated file system with almost nothing or a few honeypot files. (Inspired by the Arcan project: https://www.divergent-desktop.org/blog/2020/08/10/principles-overview/#p6) • While running any app, the framework always provides a consistent set of primitives for interacting with the interpreted sources for that app. Imagine a button in the corner that flips a Hypercard over to open an editor on its sources, or something like that. Once you're in the editor you can modify it, run it, get syntax errors, test failures, etc. The editor and build environment themselves are implemented in the framework; for the MVP we'll assume we don't need to support modifying the framework. I wonder how far Glamorous Toolkit is from this sort of experience, @Tudor Girba @Konrad Hinsen. On one hand it massively over-delivers on the editing framework. The sandboxing stuff is a new frontier with lots of open-ended questions on the best experience to avoid confusing people before they understand how things work. I'm also thinking about building on something less ambitious for an MVP, like libSDL atop femtolisp or LuaJIT. Maybe also JavaScript :grimacing: [1] Like, it's great Apple that you eliminated vectors for malicious apps with all the restrictions on installing software. But I already had a perfectly good and healthy and functional relationship with the folks who provide gdb. When you prevent me from installing gdb, that's not cool. It's good to want to protect people from dysfunctional relationships. But to require all relationships to go through a single point is not. /rant |
| 38 comments | |
|
|
George Campbell
2021-10-15 09:06 #
Does anyone know of work on software maintenance? Specifically around modifying code after upgrading libraries with breaking changes. I spend most of my time making sure no one notices that I’ve changed anything. I feel like improvements to this could have huge benefits to productivity. |
| 3 comments | |
|
|
Andreas S.
2021-10-14 01:14 #
Ouch , true? What do you think: 1. Is it harder? 2. About that relationship.. https://twitter.com/KevinHoffman/status/1448272900759379972 |
| 35 comments | |
| # |
Adnan Chaumette
2021-10-13 16:23 #
Is there some research/articles worth checking about the usage of icons in user interfaces? Looking at 3D softwares like Maya, or VS Code's right panel icons; I sometimes have a hard time understanding why we've come to rely on icons so much when they're almost never readable without an extra effort of hovering on them or clicking on them to know more about them. Photoshop is the guiltiest of all in this category, and you also have softwares like Figma, where all possible operations tend to be grouped under just a few icons, and clicking on those icons opens a dropdown that contains icon + description, which makes everything really easy to understand. Could there be some reasonable explanation beyond lack of space? In contrast, Windows Explorer took a different approach, where it occupies more space, but every single option is cristal clear even for the most untrained eye. Not sure how close this is to the FoC; but definitely close enough to the future of software visual design I believe. |
| 8 comments | |
|
|
Nick Smith
2021-10-10 19:29 #
Heretical idea: a function call syntax where the function name can appear anywhere in the call. First, presume we're using Haskell-style syntax, so that f(2,3) (C-style) is written as f 2 3 (Haskell-style). Second, presume that parameters (in function signatures) must be prefixed with a & symbol (or whatever symbol you prefer; we'll need this later), so the definition of f would look something like f &x &y = .... Now, imagine the definer of the function can choose where the function name is supposed to appear. So we could define the function f in several ways: • f &x &y = , in which case a function call would look like f 2 3 • &x f &y = , in which case a function call would look like 2 f 3 • &x &y f =, in which case a function call would look like 2 3 f Why would we want a syntax like this? Many reasons. 1. We get infix operators for free: • &x + &y = • &x mod &y = 2. We can have multi-word function names: • &x is less than &y = • if &cond then &a else &b = 3. This syntax erases the distinction between defining three separate functions returning one value each, and defining one function returning a record with three fields. I think this is nice; the distinction seemed arbitrary in the first place! Reducing the number of superficial choices a programmer needs to make helps reduce the cognitive burden of programming. And probably more things :slightly_smiling_face:. What are the downsides of this syntax? • Some of the "classic" syntax of programming languages now becomes ambiguous. In particular, we hit ambiguities when passing functions around as values. In Haskell you can write expressions like map f list where f is a function being passed as an argument. Given we could now define f as an infix or postfix function (see earlier), we need to make sure that we can refer to the function in an unambiguous manner. We could do this by writing something like map (. f .) list where the . symbol means an unbound parameter. For the multi-word functions, you'd write map (. is less than 5) list • There are a few other potential issues I'm working out. Regardless, this seems like an interesting idea, right? :slightly_smiling_face: How do people feel about it? |
| 60 comments | |
|
|
Ildar
2021-10-07 15:48 #
How is everyone |
| 4 comments | |
|
|
Ildar
2021-10-07 15:48 #
Hey haven't been here in years |
|
|
Diego Moya
2021-10-04 10:55 #
Artificial Intelligence is known to be a generic umbrella term for a wide variety of techniques. The current AI renaissance based on Machine Learning is all about advanced statistical techniques, and they're getting awesome never-seen-before results in all kinds of artistic media or tasks requiring observation and adequate reactions. Yet it often feels like these techniques don't really understand the problem they're solving, they merely act by imitation of what they were trained on. Classic AI, the one based on logic inferences, is strong in that task of understanding the situation and giving precise answers. Yet it lacks intuition, often resorts to brute force, and has not been seen to be able to generate anything resembling creativity (or not on the levels of the Deep Learning). I have often wondered if there would be a way to combine the strengths of both, but I know of no research that has attempted to do that. Do you know of any techniques that combines ML with deductive reasoning, using the first to "learn" about a problem domain and the second to "clean up" inconsistencies and errors in the solutions created "by gut feel" with the former? |
| 11 comments | |
|
|
Mariano Guerra
2021-10-01 03:01 #
Which tools/processes/media do you use to "approach" a problem before starting to write code in a text editor/IDE? |
| 9 comments | |
|
|
Ivan Reese
2021-09-30 15:35 #
Did programming go through the "PC revolution" too? Because to me, programming pre-PC, during PC, and now post-PC (tablet, etc) seems to have changed far less than hardware and other software, especially with respect to the qualitative nature of the changes the PC revolution brought about. Change my mind? Anyone else ever talk about this with this lens? |
| 17 comments | |
|
|
David Brooks
2021-09-28 18:49 #
I've been asked to speak a bit about sociocracy https://en.wikipedia.org/wiki/Sociocracy and how it works. It is a huge topic, but I'll attempt (perhaps foolishly) a summarization. Sociocracy is a framework for self-governance of a group of people. This could be anything from a book club with your friends to a large corporation. In my mind, the main pillars of sociocracy are: consent, circles, and feedback. 1. Consent: sociocracy takes "consent of the governed" very seriously. Every decision of a sociocratic circle must be made with the consent of everyone that is a member of that circle. Lots of people think this is impossible, but I assure you it isn't. The key to making this work is to try to find a course of action that is within everyone's "range of tolerance." That is, the decision doesn't have to be everyone's preference, they don't have to like it, they just have to be "okay with it." Finding a solution within the area of "I can live with it" is a LOT easier than finding a solution that makes everyone happy. Indeed, the later is often impossible. 2. Circles: a sociocratic circle is the fundamental unit of organization within sociocracy. A circle can optionally have one or more Child Circles, if the organization is large enough to warrant it. Each circle in sociocracy has an AIM (a reason for existing), a DOMAIN (area of authority), a TERM (how long it exists), and MEMBERS. A circle also has ROLES: 1) Lead: think "project manager" for the circle. Doesn't actually make the decisions (remember that is by consent of the members of that circle) but rather supports the circle so that it is still headed towards its AIM. 2) Facilitator: simply someone who ensures circle meetings run smoothly and are in service of the AIM. 3) Secretary: the person tasked with "making sense" of the circle's activities, recording minutes, logging decisions, etc. and 4) Delegate: see below. 3. Feedback: The Delegate is the circle member tasked with pairing with the Lead to ensure the free flow of information from a Child Circle to a Parent Circle by virtue of being members of both circles. With this free flow of information and consent from "top" to "bottom" an organization becomes very aware of how well things are working at all "levels". Paring this with circle (and policy, and role) TERMS, sociocracy enables a dynamic, self-healing, and fluid structure of self-governance. If you'd like to learn more about sociocracy, I highly recommend "Many Voices, One Song" by Ted Rau and Jerry Koch-Gonzalez https://www.sociocracyforall.org/ And I can give a talk about it, if folks are interested. Thanks! :slightly_smiling_face: |
| 16 comments | |
|
|
Rob Haisfield
2021-09-27 18:35 #
Is there some name for the combination of text files and an IDE? A grouping like “GUI” |
| 3 comments | |
|
|
Sophie Smithburg
2021-09-24 06:50 #
re symbolic execution in ruby, i'll put that in a thread because i did NOT realize how much of a wall of text i was putting up just now (oooooops) |
| 14 comments | |
|
|
Sophie Smithburg
2021-09-24 06:47 #
some asked about my thoughts on the ethics of full time employment in my intro thread (../introduce-yourself/1632414970.023600.html), since there were other topics in the thread as well i'm splitting them both out to threads here. this one will be just for the ethics of full time employment in tech. rant follows. it comes down to the power to say no meaningfully. full time employment ties your wellbeing to that of your employer. employers are fundamentally pro profit, or at least pro continuation of the organization generally (nonprofits don't tend to stop existing, partly because they hardly reach fundamental solutions, which... well, it's never incentivized) code has immense power to structure the very fabric of our world. i got into caring so much about this because of overdraft charges in the US, which i thought, there just has to be a better way this could work. why can't this shit be more instantaneous and easier to reason about. turns out that was partly just a money making scheme by the banks, but also? the US financial infrastructure is absolutely awful. and websites were always full of awful crap that made my life unmanageable as an invisibly disabled person (autistic, ocd, cptsd). every organization i've been part of in my decade of paid tech, no matter how nominally benevolent, has casually made decisions that harm others without consulting them. every single one. and i've worked at places that just like, taught literal arithmetic to elementary students. you'd think that could be harm free!! in my time as an SRE at google, I realized just how fundamental conflict and disagreement is to software. i was repeatedly incentivized to harm my end users and spin it as doing a good job. i saw the tendency of infrastructure teams to say no reflexively, even when there was clear benefit to users, and people actively depending on and asking for the features. at the same time, higher ups were saying satisfying the end user is in fact the most important thing. that we should be talking to them, doing surveys, etc. when i went to implement this, it was used against me in perf as being on task. same for when i tried to defend our data integrity SLO against a migration that would fundamentally break it, right after we'd just adopted it. i could've done better by those users if i'd actually been empowered to serve their needs. i could've done better by everyone impacted by my work across my whole time in industry, honestly. but i would've had to be able to actually listen to and trust users and other stakeholders. i couldn't do that and advance professionally. i couldn't for a decade, and i tried so hard. but serving users better and aligning interests with them has never been in the interests of my employers, and fundamentally can't be in the interest of any for profit organization as we structure them today. i think to do better we need platform coops where all stakeholders have governance power of some sort. literally all. i don't think we can ever make tech more usable or ethical without it. the reason is that tech is a wicked problem (wiki it) space, full of essentially contested concepts (wiki it) (this is not the venue for deliberation over these questions, but) two examples everyone will be aware of in some way: • what is a name • what is a gender really illustrate the point here. there is fundamental disagreement on these. with disagreements about such fundamental compound datatypes, the very idea of software correctness looks questionable at its philosophical foundations. correct for who? for what purpose? by what values? we can't even do the weak notion of software correctness we talk about these days, much less reliability or usability, and we're never going to get anywhere by ignoring the fundamentally socially complex nature of our work. corporations aren't suited to address those kinds of questions. they can't be. we've reached the point where tech is too personal, and as the personal is always political, corporations must try to grapple with political and social questions while being composed of individuals who are profoundly incentivized to never discuss such things bcz professionalism and for-profits-should-be-neutral-or-only-good-for-branding-reasons. that's some thoughts. (@Konrad Hinsen @Eric Gade since you both asked about it over in the original thread.) |
| 64 comments | |
|
|
Allan Campopiano
2021-09-22 11:14 #
:badminton_racquet_and_shuttlecock: Quick question: Do data scientists use inferential statistics such as t-tests, ANOVAs (and related stats like p-values and confidence intervals)? If so, is this done to compliment ML approaches? I’d love to hear some examples. A social scientist is usually concerned with explanation rather than prediction. The opposite seems to be true for data scientists. I’m curious how much overlap there might be from a data scientists perspective. |
| 5 comments | |
|
|
Nick Fox-Gieg
2021-09-22 09:20 #
So a few months ago I was posting here about teaching coding in the same university art dept. ten years apart, and finding that the institutional memory of how we did it vanished in the interim. Now I've put together a new intro course and I've encountered a fascinating new curveball from the Class of ~2024: profound lack of familiarity with desktop UI conventions. https://www.theverge.com/22684730/students-file-folder-direc… |
| 25 comments | |
|
|
Cole Lawrence
2021-09-19 13:13 #
Has anyone seen a great WYSIWYG experience for editing margin (and/or) padding in a design tool? I’m thinking something that does not require a tool window on the right side of the screen, and might be a bit opinionated about the amount of flexibility give to the “designer”. One example that comes to my mind is the designer for theming Alfred (for macOS). cc @Ivan Reese @Florian Schulz @Joshua Horowitz? |
| 6 comments | |
|
|
fivo
2021-09-17 10:36 #
Imagine a finished system that runs (in the sense of there are no runtime bugs) that has lots of threads/routines with all kinds of message queues/channels that interact. I am wondering what kind of visualization tools exist that help me understand where possible bottlenecks are, which parts are active and where there is congestion? The closest I can kind of think of is VisualVM , but it is still kind of basic in the sense that it only gives visually access to stuff like fine grained memory usage, performance of subparts, which threads are active, idle, parked but does not give me a lot of insight in how the different system parts interact with one another. I admit that I also don't know exactly what I am looking for and therefore don't know what I should be typing into my favorite search engine. I am sure somebody has built more elaborate tools in that direction and would like to hear your thoughts and suggestions of what I should be looking at. So as an example, let's take a simple producer/consumer model on a channel. Let's say the producer is producing more stuff of than the consumer can take from the channel. One could imagine a node (consumer/producer) and a line (channel) visualization where one sees how active the producer/consumer is (via a red to green spectrum), maybe also one could zoom in to see which subpart is active and how full the channel is (maybe also via a red to green spectrum). That is just an example that came to mind in which the channel would be become dark red over time as it becomes "congested". Keen to hear your thoughts/ideas. |
| 8 comments | |
|
|
Mariano Guerra
2021-09-16 14:54 #
Have you tried enso, darklang, wasp, glamorous toolkit, mu, imp, simoji.pub, operon, cuttle, flowrunner, gadget, meemoo, MockMechanics, WhiteBox, MAudio, TypeCell, Ratio, natto.dev, kinopio? Why not? :wink: Maybe you didn't know you could? where to start? what to do? what kind of feedback to give? in which format? where to submit it? Here's an idea: Review Jam! A Week of Constructive Feedback and Conversations An opportunity to share and get real usage feedback on your project An opportunity to experience, review and get inspired by other projects Like a game jam but we try each other's projects Check the draft page and let me know what you think! http://marianoguerra.github.io/review-jam/ |
| 41 comments | |
|
|
Alex
2021-09-15 12:43 #
Ok thanks for the thoughts and recommendations. I'm going to check out now, it seems tech-oriented slack discussions are just no good for me and vice versa. Hope to catch up with some of you elsewhere |
| 1 comments | |
|
|
Alex
2021-09-14 23:58 #
Ok here goes a 'diversity' thread! I ran a session on the weekend that was like a kind of reverse beginners' workshop. We talked about what it was like engaging with tidalcycles as a community as a beginner, trying to teach me how to improve things. It echoed a discussion I took part in with early career Black artists as part of a programme called 'algoafrofutures' - I learned there are huge hidden barriers to participation in the form of hidden hierarchies and norms that repel most people ('most', given that white men are the minority). It seems that many just don't want to post their questions to a forum or especially engage with a live chat system because of bad past experiences and the general attitude of the "men on the internet" who hang out there. It seems people who experience racism, misogyny etc are there, but are lurking or not participating (shout out to the lurkers! would love to hear what you think but, well..). Similarly with local live coding workshops in Sheffield, women-only workshops will be full but then only men will show up to open workshops and mansplain things to the woman co-running the workshop. This is serious I think - communities that repel most people in ways they don't realise, and which totally undermines their aims to e.g. find a future of coding for everyone (in the case of this community), or do something similar by connecting computer programming with performing arts and wider culture (in the case of live coding). So what can we do about it, besides solemn introspection? I really enjoyed Emma Dabiri's work which challenges the response to BLM, from an Irish and UK perspective. I recommend her short book 'what white people can do next' and most recent appearance on the blindboy podcast - best to check that out than rely on my summary.. But her thinking is based on solid academic understanding of the nature of race, and argues not for allyship (which only re-enforces power structures) but coalition. I think I'll stop there as I'm interested in what other people think 'coalition' could mean in this context.. |
| 61 comments | |
|
|
Jimmy Miller
2021-09-10 08:19 #
I know a lot of us here have been influenced by talks like Bret Victor’s “Inventing on Principle”. But I’m curious about your favorite papers that are somehow related to the future of coding. I’ll start with mine. PILOT: A Step Toward Man-Computer Symbiosis - Warren Teitelman This is actually a thesis, so it is a bit long, though much of that length is taken up with a transcript. I will admit there is a lot in this paper that isn’t great. The resulting system is almost certainly something no one would want to use today. But yet in it are such interesting ideas. It is often considered to be the paper that introduced aspect oriented programming, but I believe that sells it a bit short. PILOT is an integrated, live, editing and computational system. It’s goal is to allow programmers to 1) customize their interface and syntax, 2) edit programs they are unfamiliar with 3) make changes not just to current functions in the program, but future ones as well 4) control how the program itself executes and so much more. It is a bit of a historical trip, but includes so many fascinating ideas. Programming as Theory Building - Peter Naur Naur lays out a view of the activity of programming that is both radical and yet highly attractive. A key consequence on his theory is that the real end product of programming is not the source code, not the build artifact, not the running system, but the knowledge that a programmer builds. So much follows from this. It is a fascinating paper that I highly recommend reading. The Structure of a Programming Language Revolution - Richard P Gabriel A beautiful paper about the changes to programming language research that Gabriel has seen over his career. I will just leave you with this quote that sets the mood for the paper. > That night I pulled the paper down from the ACM server and read it while outside enormous puffed clouds dwelled overhead, lit from beneath by the town of Porto de Galinhas on the Brazilian coast; the smell of burning sugarcane and bitter ocean pushed into my room. What are your favorites? What papers have really pushed you in a particular direction? What papers do you think people should read, even if you disagree with them? Whatever the criteria for the paper being good, I want to know about it. |
| 41 comments | |
|
|
Ivan Reese
2021-09-08 20:06 #
I'm thinking more about the sensation of time, as it pertains to the execution of code. (Yeah, back on my bullshit.) I see a spectrum here — a spectrum of different sensations of time for different ways we interact with computation. On one end of the spectrum, we have raw math. There's not supposed to be any sensation of time in the evaluation of math. A variable always has a specific value; relationships either exist or they don't. It might take you (or a computer) some time to crunch values and arrive at a result, but that's absolutely _not_ supposed to be part of the aesthetic. Conal Elliot's Denotational Design is an application of this sort of thinking to software design. Lambda calculus, Curry-Howard, and some of the more hardcore FP languages all exist — infinitely, suspended frozen in midair — over here. Of course, no computer language is actually timeless (that violated physics, and this is addressed in Church-Turing and related work, and we all agree never to try that again), but the desired sensation — the aesthetic — is one in which time is not a constraint or concern. On the other end of the spectrum, we have mechanical computers. There's no avoiding the sensation of time when operating these clockwork beasts. You're required to think about the passage of time as you plan an execution, or else the result will be nonsense, or malfunction. Nothing is instant, nothing exists until you build it. Here we find the CAP theorem, Turing machines, and Rich Hickey's The Language of the System, all of them toiling, sweating, grinding, churning. [Aside: note that Functional Programming is orthogonal to this spectrum — it is not bound to the math side. On either extreme and anywhere in between, you can have programming that's about immutable values (or not), static vs dynamic binding, data & behaviour co-located (or not), for-each vs map, place-oriented vs value-oriented, and so forth.] I've spent all my time over in the mechanical labour camp — this is where Hest lives. So I don't have much insight at all into the crystal tower of pure evaluation. So beyond just suggesting "Hey, talk about this spectrum" (which, granted, I am suggesting), I'd also like to know what examples you can point to that obviously violate this common alignment of aesthetics. For example: what's the most I feel the passage of time in execution you can get to when working with something like Coq, or Haskell, or APL? Is there some step debugger for SML that really lets you feel the iterative progress through execution? Or on the other side, what's out there that takes a process rooted in time — like CAP — and makes it shake that feeling of temporality? Look at something like Erlang/OTP — they take Prolog (timeless) and reify the sensation of process ("let it fail"). Who else is doing that? Is anyone doing it in the other direction? |
| 26 comments | |
|
|
Nick Smith
2021-09-08 16:12 #
Calling all software engineers who know basic category theory: some applied category theorists in the US are organizing a hackathon to explore how the theory of polynomial functors can be applied to software development (new programming libraries and/or languages). The attendees would be a mix of software engineers (who know category theory) and category theorists. If you'd be interested in attending or brainstorming about such a hackathon let me know. I've offered to help organize it, but we need more input from software engineers. :slightly_smiling_face: This would be an in-person event in the US, taking place ~March next year. There is a short course and book draft on the category of polynomial functors, outlining its applicability to interactive systems and databases. I expect these applications will be the focus of the hackathon. |
| 6 comments | |
|
|
Florian Schulz
2021-09-05 22:01 #
When @Ivan Reese talks about the data model in Hest (Hest Podcast, Episode 25), he mentions things like: • AOS: Array of Structs • SOA: Struct of Arrays He also mentions a way to organise data where each property (name, color, position, …) is stored in its own Array – in contrast to an Array of Objects of Properties. This reminded me of a talk I had seen at Unite (Unity Conference) about “Data-Oriented Design”. While it makes a lot of sense in terms of memory usage, caching and lookup performance, I barely see data-oriented design today. What are examples of programming languages or software that are using/promote data-oriented design outside of game development? |
| 7 comments | |
|
|
Nick Smith
2021-09-04 01:57 #
Huge idea: what if tensors are the next-generation replacement for RAM? Classic RAM (I'm talking about the software abstraction, not the physical hardware) is just a vector with 2^64 cells, most of which are zero and not backed by physical memory. This is commonly known as a sparse vector. The current AI boom has made it obvious that higher-dimensional memory chunks, known as tensors, are an important idea, especially sparse ones. Other than being higher-dimensional, key differences between tensors and RAM include: • An AI app will typically work with multiple tensors, but a classical app will only work with one RAM. (Though Wasm can have multiple RAMs, known as "linear memories", and of course, you can pretend to have multiple memories using abstractions like malloc). • Tensors can be subjected to unary operations such as slicing, permuting, and aggregation (min, max, sum, product), that generalize the boring read and write operations on RAM. • Tensors can be subjected to binary operations such as multiplication/contraction (generalizing matrix multiplication), convolution, and element-wise addition. The data of everyday programs is often very heterogeneous, which corresponds to having lots of sparse tensors. Sparse tensors need good support in software and ideally in hardware. Thankfully, there is AI hardware being developed that is designed to operate on sparse tensors, by way of dedicated circuits that can compress and decompress them. Tenstorrent is probably the leader here. Here's a fun fact: multiplication of sparse Boolean tensors is equivalent to a database equi-join. So if you think databases are important, then maybe you should give tensors some thought. And relatedly: operations on tensors are typically massively-parallelizable, thus could be a good foundation for a high-performance programming language that compiles to AI hardware. |
| 29 comments | |
|
|
Denny Vrandečić
2021-09-02 15:22 #
When designing a programming language, what are good resources for designing the error / exception system? |
| 56 comments | |
|
|
Rob Haisfield
2021-09-02 15:13 #
Anybody know of a solid GPT-3 generator for GraphQL queries? |
| 4 comments | |
|
|
Andreas S.
2021-09-02 03:48 #
I’m so grateful to @Jack Rusher or was it @Konrad Hinsen ? For introducing me to Ivan Illich. Here is a interesting piece by him on technology (computers) and how it relates to the concept of commons. https://dlc.dlib.indiana.edu/dlc/bitstream/handle/10535/5962… |
| 1 comments | |
|
|
Breck Yunits
2021-08-30 17:55 #
Has anyone seen a study on "how a DSL becomes a GPL"? Or, alternatively, "what is the most common path travelers take before arriving at Greenspun's 10th rule?" Is there something like "DSLS either die or eventually add identifiers, then functions, then branching, then macros, etc"? I'm curious if you can look ahead and say "well if this is successful, it will eventual require so many things, so might as well not do a DSL in the beginning and instead start with a GPL and build a library" |
| 7 comments | |
|
|
Kartik Agaram
2021-08-28 14:43 #
I have a problem I'd appreciate thoughts on, particularly from aficionados of visual programming. But it requires some setup, if you'll bear with me.. (see thread) |
| 8 comments | |
|
|
Alex
2021-08-28 00:59 #
One thing I've wondered about version control is what a system would look like that focussed on getting the code back to a previous state rather than the pervasive model of linear development towards some goal |
| 55 comments | |
|
|
Kiril Videlov
2021-08-25 08:48 #
Hey! New to the community here (just intro’d myself in #introduce-yourself). Anybody interested in version control and coding workflows? In particular, the way Git is used industry wide at software companies. Here are some observations: • Despite the VCS being distributed, orgs use single source of truth • Units of collaboration are batches of change (PRs) and the smaller the better • Often code review is either nitpicking or shallow (“LGTM”) • “Getting” other people’s work-in-progress code (to help or just try it out) is laborious - (stashing own work, adding remote, fetching, checkout) I am really into the idea of tight feedback loops when developing. Starting from how we help one another, feedback from CI all the way to actually shipping small, incremental changes to prod. I think there is a lot of power that could be unlocked for devs by continuous sync-ing of code in the cloud. WDYT? |
| 7 comments | |
|
|
Luke Persola
2021-08-24 09:59 #
What minimal, universal AST specifications exist? Which are best? Software that deals with code in multiple languages usually needs to handle that code in a common format. But trying to capture complete language semantics for all languages in a single format seems hopeless. Instead, we’re faced with a trade-off between the variety of languages we represent and the thoroughness of the representation. On one end, text data is essentially entirely universal (caveat: encodings), but is very low level. On the other extreme, a given language compiler’s AST format fully represents semantics, but only for that one language. There are also some complete AST formats for families of closely related languages. Language-independent compiler IRs like the LLVM IR represent code in many different languages, but I think their usefulness is limited because they require irreversible transformations (they always would, right?). I’m interested in the spot just above text: interface specifications that can represent code as basic data structures for nearly all languages, with little to no specification of semantics. So generally little more than a tree spec with room left for language-specific data. I’m only aware a few specifications like that: • as a baseline, s-expressions (not the textual format, just the concept of nested lists) • Babelfish’s UAST — they lost their web domain, so presumed dead • unifiedjs’s unist — I’m thinking of adopting this for my structure editor because its ecosystem seems healthy and my project is in JavaScript, but to date it’s largely used for markup languages Do you know of any similar specifications? What are other projects using? Are you in a different spot on the trade-off spectrum? |
| 22 comments | |
|
|
Shubhadeep Roychowdhury
2021-08-19 22:28 #
Anyone here is interested in SAT, 3-SAT, Complexity, P vs NP? I was looking everywhere for a particular version of 3-SAT algo that I am thinking of (although it is not totally done in my mind) and I would like to understand what am I missing (or not seeing rather) because it does seem to me that there is a nice (i guess) polynomial time (I hope) algo to deal with 3-SAT. Now 3-SAT being NP Complete and the fact that all NP-Complete problems can be reduced to 3-SAT in polynomial time, I am certainly off somewhere. The problem is, I can't figure out where. So was thinking to talk with someone with experience in this area... |
| 3 comments | |
|
|
Breck Yunits
2021-08-18 18:29 #
I take it as an axiom that I'm more productive with JSON over XML, and that the shift from XML/WSDL/SOAP APIs to JSON in the 2000's was a great thing and enabled me to be more productive. I am trying to narrow down what the magnitude of the improvement was. Are JSON vs XML APIs 10% better, 50% better, 200% better, 10x better? Curious if anyone has seen any good numeric takes on that. And also happy to hear from anyone who disagrees with that axiom, but if so please share how much worse you think JSON is, numerically. My ultimate aim is to try and numerically forecast what the potential gains from the next global notation could be, if any. |
| 21 comments | |
|
|
xyzzy
2021-08-14 03:07 #
Thoughts on low-code, nocode tools My use case is simple. I want to build forms, avoid crud and send email notifications without writing a ton of code. Probably my favorite so far has been https://anvil.works/ but even that was rejected. The most impressive was bubble. I will evaluate https://docs.budibase.com/, https://enso.org/ over the weekend Here are my gripes with the tools 1. JSON exports / Unreadable code generation - This just kills most solutions for me. For this reason I would much rather use tools like tailwind designer that generate readable Html5 code. Looking at you webflow. 2. Cloud Only - If the trend of cloud goes on any longer I will be calling all offline apps and command line tools lightning apps. Pure offline support is important. Self hosting is important. I love node-red in this regard. 3. Intimidating examples - My use case is simple. Most examples and documentation provide complex use cases. When learning programming in the text driven world, we start with “Hello World”, simple iteration, repl, libraries and shell scripts. Not only are these easy and fast to type, you can copy paste stuff to get things working. Copy paste is a killer feature of the text driven world. 4. Tie in with frameworks and using the browser for editing code - This introduces too much dependency and breaks my existing way of working. 5. Can’t re-use the components in existing projects - I think these platforms need to provide an api or hooks so that they are reusable in normal scripts. Perhaps 90% of the app can be designed in the browser but 10% can be done in the traditional way. Here are some good enough and free solutions - stencil, mongodb, python scripting, wordpress, webkit shell for mobile apps, tailwind designer for UI. For a team < 10, these solutions are workable with email and all of them are free. These solutions are simple. Perhaps no code is doing too many things at once ? |
| 9 comments | |
|
|
Andreas S.
2021-08-14 01:06 #
Another very interesting piece is this by Kei kreutner, shining light on the relationships between DAOs (and what does that mean anyways) and cooperatives. Is the future of coding community a potential cooperative or a guild? https://twitter.com/keikreutler/status/1417861127590092802?s=21 |
|
|
Andreas S.
2021-08-14 01:03 #
The blockchain space can be roughly understood as an exploration into what can money mean in the 21st century. How can it be more just and in general offer more options for participation. Since crypto is already computational native it extends from there that tools, coding experiments are needed to really implement these new ideas. |
|
|
Andreas S.
2021-08-14 01:01 #
Hello :wave: everyone It’s been a while since I talked with @Ivan Reese about Project Funding from the blockchain space. This here is a nice example for me showing that there is a great potential for collaboration: https://twitter.com/fabgenovese/status/1423685800252825601 |
| # |
André Terron
2021-08-05 22:59 #
Exploration: How much can debugging resemble music playback? As I was working on an exploration on debugging interfaces, I came across the concept of using music controls for code execution (just for fun). What buttons would you expect to be there, and what would you expect those buttons to do? I'm also looking for other debugging projects for inspiration, and I'd love to hear what are your essential debugging tools and workflows! Thank you! |
| 7 comments | |
|
|
xyzzy
2021-07-29 21:31 #
What do you guys think of VR ? I think VR will kill web in the next 20 years. Social networks and forums will be replaced by something like Mozilla Hub. Blogs and e-commerce would be replaced by virtual shops and pamphlets. On the developer’s end Visual programming and design could be more intuitive in VR https://www.youtube.com/watch?v=4rwYiINE9RE |
| 28 comments | |
|
|
Gordon
2021-07-29 01:10 #
Hi. Long time listener of the podcast, but only occasional lurker here since I'm an armchair future coder. Just thought I'd throw out some ideas I've been mulling over to get some feedback on their plausibility. First: A controlled natural language (CNL) like Attempto Controlled English for precise documentation. I'd envision a sort of CI pipeline where updates to documentation trigger a series of tests, and if the documentation doesn't match the code its paired with then the tests would fail. In the other direction a CNL seems like a great starting point for program synthesis from a higher level of abstraction. Second: A math chat bot teacher. Given a math question and its answer, can a program deduce the conceptual error(s) that led to any wrong answer? So far I have a list of possible useful technologies: SAT/SMT solvers, Prolog, ASTs, Lean, Sympy in Python. I haven't put in much actual work yet, but order of operations questions seems like a good (or easy) place to start. After listening to an interview with Sal Khan of Khan Academy (on the 3b1b podcast) my pie in the sky idea is a chat bot that can help a student through the entire pre-k - 8th grade curriculum. Seems like a better idea than the one I had that expected kids to learn LaTeX. |
| 6 comments | |
|
|
hamish todd
2021-07-26 16:14 #
Why isn't it as easy? |
| 2 comments | |
|
|
hamish todd
2021-07-26 16:14 #
But, even though the analogy seems fairly direct to me, we are much, much better at the linguistic one. To do all but basic algebra rearrangement, I have to stare at an equation for a while, it doesn't come as naturally as the linguistic example. This is even though I've been doing this kind of thing for a while. |
|
|
hamish todd
2021-07-26 16:12 #
Slightly idle thought. I believe that algebra (as in "algebra 101") "calls on the linguistic part of your brain". For example, the linguistic part of your brain can apply the rules of grammar to the sentence "the gostak distims the doshes" to get other sentences like "doshes are things that the gostak can distim". Just as it can rearrange "a b / c" into "a / c b" |
| 15 comments | |
|
|
Matt
2021-07-23 16:13 #
I'm interested in the topic of wikipedia software, how to best organize information, how to track changes to information overtime, how to quickly find the information you need, etc. Do any of you know any interesting spaces or communities or forums or websites online where there's a strong focus on this subject? |
| 5 comments | |
|
|
Dhruv Kapur
2021-07-18 07:02 #
Using this form to think aloud. I just came across a really old note about IUPAC naming in chemistry. Maybe particularly in organic chemistry. I wondered if there is a similar naming standard in the world of software. If so can someone point out to me? |
| 11 comments | |
|
|
Breck Yunits
2021-07-16 18:01 #
Anyone have any recommendations for fun general purpose sim builders? |
| 5 comments | |
|
|
Alexander Chichigin
2021-07-16 01:20 #
Hi everyone! I'm adding (retrofitting) an asynchronous request processing (first server-side, then client-side too) to a Web programming language (webdsl.org to be specific). I would appreciate your suggestions and references to existing models, both syntactic and semantic. I'm particularly interested in mandatory timeouts and error handling, and compositionality. As long as request processing is essentially a FSM you can view the question as "nice and composable syntax for describing FSMs". :slightly_smiling_face: |
| 2 comments | |
|
|
Daniel Garcia
2021-07-14 14:44 #
> Which mental faculties are involved in programming? If we knew more about them, could we invent programming languages that were both easier to use and more powerful? > > This is not a well-studied area, and very few aspects of programming languages, old or new, are evaluated formally for the quality of their "human factors" or "user experience". For example, among the features of artificial languages, there has been no attempt to separate experimentally those features that are cultural artifacts, from those that reflect our innate, genetically-endowed mental capacities. From https://chomskyalexander.blogspot.com/2010/03/depth-and-inna… Has anyone come across other programming languages with a similar idea? |
| 5 comments | |
| # |
breck7
2021-07-12 12:12 #
Thinking more about the wires crossing problem (from Adnan's "portal" conversation) that plagues every node and wire GUI tool after log 2, I was wondering if anyone has seen any great GUI tools that use a "Tube" model instead. The idea is nodes would always have a single parent, and a fixed x/y position, and be connected to their parent by a tube, in which unlimited wires might be threaded. Messages between nodes would have to route according to these layouts (each node would have routing capability). To see the exact connections between nodes, you would likely have to hover over a node and it's relevant wired connections could highlight. Does the EE world have GUI tools that follow a paradigm like this? |
| 14 comments | |
|
|
Dhruv Kapur
2021-07-12 09:46 #
Hello people. Not sure if this is the right group for this question but I thought I will ask anyway. I wanted to see how will someone approach making a business case between two tools where the only difference between is that one of the tools offers a much better UX, but also comes with a hefty price tag. |
| 10 comments | |
|
|
Ivan Reese
2021-07-07 19:20 #
Anyone have a big list of all the different verbs you typically do with arbitrary data, at a very general/abstract level? I'm thinking things like split, join, count, clone, shuffle, map, filter, reduce, sort, annotate, simplify, store, load, print, splice, reverse, invert... |
| 26 comments | |
|
|
Srini K
2021-06-28 08:27 #
Does anyone know of any tools that let you ‘trace’ and understand every function, variable, + state / values in a Python web app / project? I’ve found tools for logging and full on observability in production / monitoring but I want to be able to “do a few things” in the UI and then understand the Python code that was run. I’m also aware of step debuggers and breakpoints but is there anything that just captures the entire state of the Python app and lets me understand it as it changes over the span of 30 seconds. I”m well aware that this will likely generate a TON of data thats painful to understand, but I’ll cross that bridge then! My motivation here is to understand a daunting code base for an open source project. |
| 16 comments | |
|
|
Rob Haisfield
2021-06-24 06:31 #
I keep hearing about how Common Lisp has insanely cool tooling but struggling to find examples. Anyone have any links? |
| 6 comments | |
|
|
Nick Smith
2021-06-23 01:32 #
All modern programming languages apart from Rust (and I guess Swift, with its reference-counting) rely on garbage collection: a "background thread" locates memory the process has forgotten about and marks it as available for re-use. However, this doesn't seem to be a sensible scheme in a distributed system where multiple processing devices each have local memories. That begs the question: if you want to design a programming language that can be transparently distributed over multiple devices, does it need to have a fancy type system (like Rust's) that enforces correct manual memory management? One reason I'm thinking about this: most upcoming AI chips are using a "network-on-chip" architecture, which could also be called a "distributed system on a chip". A garbage collection algorithm on these chips would have to involve a message-passing protocol wherein different parts of the chip communicate to identify forgotten memory. This seems like an unnecessarily complicated and expensive approach to memory management. Thoughts? :unicorn_face: |
| 24 comments | |
|
|
Nick Winter
2021-06-19 11:00 #
Is there any platform/service out there that connects pair programmers to your editor/IDE session to work on whatever you’re working on with you, on-demand in real-time? Something in between Kite (one example of a service that provides ML-powered code completion in your IDE) and hiring a consultant / person / firm (perhaps from Upwork or some similar platform), something that abstracts over who is doing the pair programming work and makes payments easy? |
| 16 comments | |
|
|
Vijay Chakravarthy
2021-06-13 18:36 #
I was going through Marshall Lochbaum's BQN (https://mlochbaum.github.io/BQN/) and was "gazing into the abyss" thats the self hosted compiler. At this point it occurred to me that programming languages go through inordinate amounts of syntactic differentiation to distinguish between different tokens in a programming language. This leads to escaping mechanisms within strings, and also notions of operator precedence in the case of APL like languages. Most of this is a result of tools -- early versions of editors were not structural. Has anyone thought of/looked at examples of what programming would be like if one added a secondary layer of say range based annotations on top of strings (basically a rich text like notation) that would make it much easier to parse/disambiguate tokens and semantics? The only thing that springs to mind is Chuch Moore's colorForth. |
| 14 comments | |
|
|
Everett Pompeii
2021-06-13 08:43 #
Hey all, I'm not sure where else to post this. What is the procedure for visiting Dynamicland? I shot an email to hi@dynamicland.org, but I figured someone here may be able to redirect me if there's a better course of action. |
| 3 comments | |
|
|
Andreas S.
2021-06-12 02:11 #
I found this interesting :thinking_face: bit today https://twitter.com/evincarofautumn/status/1403414438623866884 |
| 1 comments | |
|
|
Srini K
2021-06-11 08:50 #
founder of the startup I work at posted this, def thought provoking https://www.linkedin.com/posts/maximebeauchemin_interesting-… “So. Business intelligence tools are arguably the “original” and most advanced form of no-code / low-code application. Clearly an interactive dashboard built in your favorite BI tool is a fairly complex no-code, specialized data app. Now here’s the question: why has low-code been so prevalent in data visualization historically while being not popular in other areas of software development? What is it that makes low-code more suited to dataviz?” |
| 16 comments | |
|
|
Nils Berg
2021-06-06 15:21 #
More thoughts on Hest, carrying on from https://twitter.com/spiralganglion/status/1401625480348848132 (Hi @Ivan Reese!) I had some thoughts on synchronization of data, which I realize is an aspect of Hest's design space that's not fully explored, so grain of salt and all that :slightly_smiling_face: Mostly I want to draw a parallel to chip design (VHDL/Verilog), which if you squint a bit is a lot like Hest but with much, much worse UX. You run into the same synchronization problems there, and the solution is actually really close to both the "sync" primitive and the "Fibers" you describe in your podcast – you put latches/registers between components of your design. In fact, those are a nice implicit way that abstraction and structure can arise in a hardware design – when you realize you can't do all the things you want to instantaneously, you add a latch, which then delineates a component/pipeline stage. One point (in my eyes) in favor of calling it a "barrier" rather than the concept of "Fibers" is that with Fibers, you're essentially making the bug undetectable. Consider a -thing- with two inputs, but one of them does not arrive. If your inputs are combined at a barrier, your code would get stuck if either input didn't arrive in time, and the program might grind to a halt. But with Fibers, presumably one of your inputs just wouldn't change and you'd have stale data on that input, but not the other. That's a recipe for producing garbage outputs and never noticing until fifteen functions later (see also: ROS :face_with_rolling_eyes: – or any pub-sub system, really). |
| 8 comments | |
|
|
Rob Haisfield
2021-06-06 06:38 #
What do you gain from being able to run a program in reverse? Just looking at @Ivan Reese’s Hest but curious more generally |
| 3 comments | |
|
|
Mariano Guerra
2021-06-06 04:48 #
How much intersection/overlap do you think there is between Future of Coding and Tools for Thought "movements"? |
| 25 comments | |
|
|
Konrad Hinsen
2021-06-05 01:39 #
This is a great episode, with touches on many topics. One of them was so much in collision with my own ideas for the future of coding that I am tempted to launch a discussion on it. It's the notion of an "escape hatch" from a programming environment. Overall, there's too much of a "let's build a universe" attitude in computing, and the idea of a programming environment ideally being complete and mostly closed is a reflection of it. I don't want an escape hatch for going elsewhere if I absolutely have to. I want bridges to other programming environments, for my own use and for connecting with other people's work. My idea of the future of coding is more like living in physical space. I live in a house, which has multiple rooms. In some rooms, I do things alone, in others with family members. The house is part of a neighborhood, where I do things with neighbours. The neighborhood is part of a town, and so on. Each compartment provides just the right environment for some activity, but none locks me in, wishing for an escape hatch. |
| 13 comments | |
|
|
Kartik Agaram
2021-05-26 10:06 #
SAD theorem As programs grow complex, you will be repeatedly forced to either: maintain some State, perform some computations Again, or Duplicate some code. Has anyone encountered a formulation like this in the literature? |
| 26 comments | |
| # |
Daniel Garcia
2021-05-21 14:27 #
Lately, I have been thinking about how to do some programming without screens. I came up with a representation of Nodes & wires with Lego's. If each function and constant has it's own color, I can represent the average function like this. - Does anyone has experience with OpenCV or computer vision, so that I can create code from the above images? - Any thougths on how to make use of 3D? (There's a slight use of 3D in an image in the thread but I think the third dimension is underused) |
| 12 comments | |
|
|
Breck Yunits
2021-05-21 13:29 #
Another good quote from a few months ago on HN (https://news.ycombinator.com/item?id=26034000): Speed has a moral dimension: to be fast is to be in tune with the facts of the world as it truly is, as the Atman has provided, without illusion. Speed has a social dimension: to make the user wait unnecessarily is to express disrespect, even contempt. Speed has an architectural dimension: to be fast, the operations have to match the parts of the system and their relationships. Speed has a spiritual dimension: to achieve speed demands that you humble yourself before the structures of the machine as it truly is, not some comfortable abstraction. |
| 1 comments | |
|
|
Breck Yunits
2021-05-19 13:10 #
An interesting quote from an HN thread about Xanadu "The brilliance of TBL is the W3 is half assed in just the right ways to make it not yet another unused visual language or mind map format." What's a term for "half assed in just the right ways"? Is there really such a thing? |
| 30 comments | |
|
|
Breck Yunits
2021-05-16 08:46 #
In a new language I am working on instead of writing one word links like <a href="https://example.com">this</a> you write links like this:spider_web:example.com. [word]:spider_web:[url]. It compiles to an a tag. HTTPS is assumed. Anything wrong with this? Which emoji should I use? |
| 10 comments | |
| # |
breck7
2021-05-13 18:50 #
Does anyone know of any 3-D spreadsheet projects like this one from Alan Kay in 1984? |
| 6 comments | |
|
|
Deklan Webster
2021-05-05 16:12 #
@Laura how did that thing with gospermap end up going? |
|
|
Jared Windover
2021-05-03 08:42 #
There was a project in here a while ago that showed a bitmap editor where they had an onscreen keyboard that had editable characters. Anybody remember what that was? |
| 7 comments | |
|
|
Jarrett Atkinson
2021-04-28 12:37 #
Very un-thought out idea :slightly_smiling_face:. I’ve noticed over time that I’m an extremely visual programmer. However, most current attempts at visual programming are bad and or incomplete IMO. Something that might be nearer our current abilities and practicality would be creating a really stupid simple toolkit that allows the interfaces of code to be played with. e.g. some namespace that filters a user list could be like this: (defn all-users [...] ...) Basically, bootstrap some simple ui (preferably where the ui design isn’t controlled by the programmer - time sink & barrier to entry) that demonstrates the function live. There would need to be multiple different kinds for different interface types, and probably domain specific ui would need to be developed per project. The primary reason I think for this kind of UI would be for discoverability and getting a high level understanding of codebases. Stupid? Crazy? Already tried? I’m aware of GT and have followed it a bit, and that seems like the closest match. I think this is a slightly different idea, though correct me if I’m wrong. |
| 9 comments | |
|
|
Mariano Guerra
2021-04-28 02:36 #
Which programming systems other than Smalltalk/Lisp Machines do you know about? |
| 49 comments | |
|
|
Scott Anderson
2021-04-27 22:51 #
What do folks here think about https://www.mightyapp.com/ ? There is an extreme schism between web/startup people (who mostly like it but have some privacy concerns) and game developers (who universally hate it) going on |
| 43 comments | |
|
|
Andreas S.
2021-04-27 04:39 #
A question for people knowledgeable in smalltalk: Can you send a smalltalk image to another smalltalk image as an object? How would that look like? |
| 8 comments | |
|
|
Rob Haisfield
2021-04-26 11:30 #
Could someone create a web browser or browser extension that just adds bidirectional links navigation, filtering, and querying to the web more broadly? Any reason that can’t just be layered on top of URLs already existing on the web? |
| 7 comments | |
|
|
Robin Allison
2021-04-25 13:46 #
This question isn't entirely thought through, but short of a formal symbolic understanding of calculus, could kids in a Papertian Mathland environment ever internalize the ideas of calculus enough to solve problems like the area under a cycloid or parabola? e.g. through the method of exhuastion. IIRC Papert talks about kids internalizing the ideas of calculus and differential geometry but its always a vague, blunt sort of intuition, that you can't solve actual problems with. My gut tells me that it is valuable to be able to have the sharper understanding that comes with being able to solve these problems. Do people disagree with this? If it is valuable to have a sharper understanding then how would "mathland" have to be different to enable people to solve these problems? |
| 8 comments | |
|
|
Aria Minaei
2021-04-19 09:56 #
I'm looking at the Self object model to see if I can use its ideas in a new spreadsheet/animation tool. Do we have someone here with Self experience who'd kindly show me how it works? |
| 4 comments | |
|
|
Mariano Guerra
2021-04-15 07:24 #
Is there any other ui toolkit with event propagation/bubbling like the web/DOM? |
| 7 comments | |
|
|
Alex Miller
2021-04-14 20:17 #
Hello coders of the future... I'm the organizer of the Strange Loop conference and we have a long interest in exploring the future of programming languages, having hosted the Emerging Languages conference in 2012 and 2013 and Future of Programming in 2015 and lots of other talks as well. We are planning for an in-person conference Sep 30-Oct 2 (1st day preconf, 2 day conf) in St. Louis. If you're interested in submitting something, our CFP is open now until May 5th. https://thestrangeloop.com/cfp.html |
| 4 comments | |
|
|
Deech
2021-04-03 18:15 #
I'm aware of the recent work with resurrecting McCLIM. It seems promising. If anyone has first hand experience using it for a real app I'd love to hear your thoughts. |
| 4 comments | |
| # |
breck7
2021-04-02 11:59 #
Super Crunch! |
|
|
JP Posma
2021-03-26 21:37 #
Is there anyone else who is interested in building high performance (no DOM, no GC) applications that compile to wasm+native? The only project I’ve found so far that seems really serious about this is Makepad, and they have some ways to go.. |
| 26 comments | |
|
|
molikto
2021-03-25 00:09 #
"Dependent types in database" http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.43.…… uses ideas in dependent type theory to reformulate & cleanup concepts in relational databases. Have anyone thought about related stuff? |
| 3 comments | |
|
|
Denny Vrandečić
2021-03-22 09:59 #
If I wanted to develop a CLI / TUI / REPL tool, say, for a functional language, with autocompletion / suggestion / fuzzy typo detection / history etc, what would I built that on? Preferably to work everywhere where node works |
| 3 comments | |
| # |
elvis chidera
2021-03-20 01:14 #
Are there good open-source projects for building the UI editor interfaces found on most no-code tools (like retool.com, glideapps.com, etc)? Components on one side, properties on the other and content in the middle. Drag-n-drop components, etc. Like the attached image. Thanks. |
| 6 comments | |
|
|
Tyler Adams
2021-03-17 09:16 #
I had a shower thought about pushing to prod, wanted to share it with FoC. Pushes to prod make no sense except for front end. A push to prod is basically FORCING EVERYBODY ONTO IT NOW. You used an old version? Too bad it's gone. For front end, I get it, no human is going to visit v1337.facebook.com. But backend, where clients are programs? Makes no sense. Why don't we use proper dependency management? Push a new version to prod. Let clients migrate manually to that new version. Want to break backwards compatibility, go for it. Push first (and use semver), fix clients later. If clients want the latest and not have to upgrade manually, let them use a symbolic version "latest." Just like the current system, only opt-in. Why can't we have this world? |
| 23 comments | |
|
|
Breck Yunits
2021-03-13 13:18 #
I'm looking for a service that gives you a VM you can SSH into with 1 click. Think Digital Ocean, except even faster (no login), and they are ephemeral (destroyed after 60 minutes or so if you don't upgrade it to paid). When I was at Microsoft we prototyped this idea (called it "Azure Instant"), but years later still looks like it hasn't seen the light of day. Someone must have made this by now, right? |
| 21 comments | |
|
|
Breck Yunits
2021-03-12 11:27 #
I'm a big fan of No Starch Press and they have a good list of books out on sale to celebrate women in tech https://nostarch.com/blog/celebrate-women-tech-nsp |
|
|
molikto
2021-03-08 23:06 #
are there some "benchmark" apps for end user programming? I listed two benchmark apps here https://twitter.com/molikto/status/1369116234155921411 they are in the category of "productivity apps", if we have a system where these apps can be easily expressed & constructed, it will be very nice. |
| 1 comments | |
|
|
Nick Smith
2021-03-08 17:22 #
I feel like I've been long deceived by the traditional definition of a mathematical relation as "a set of tuples". This is the definition used in "relational languages" like SQL and Prolog, but in the context of programming, it seems much more intuitive for relations to be defined by formulas (e.g. y = x + 1 or x + y < z), where the fundamental units of data are variables, not tuples. This is not just a cosmetic difference: you can re-use variables across different formulas (e.g. y = x + 1 and z = 2x), and suddenly a division of the program into "tuples" and "tables" no longer makes sense, because it obscures formulas and groups variables (columns) according to whim, not truth. Indeed, if you don't have tuples you don't need to worry about "keys" and "normalization" (as you do in relational DBs), because the formulas directly express the dependencies between variables (columns). This leaves me deeply confused as to why in the logic & relational programming community, I've never seen anyone challenging the notion of tuples. miniKanren and constraint programming (but NOT "constraint logic programming") are the only relational language families I know of that are based on variables & formulas, not tuples. (I'm not an expert in these languages, but I'm investigating them.) Bonus fact 1: the EAV model (popular in recent years) doesn't solve normalization problems, because sometimes you truly want a large number of variables (columns) to be interdependent, e.g. x = 2y = 3z = 4t. EAV still maintains the indirection of tuples and tables, it just restricts the number of variables (columns) to 3. Bonus fact 2: the tuple model isn't even necessary for plain old data, where you might argue "there are no underlying formulas". There is definitely still a formula involved! The tuple (1542, "Nick") can be expressed by the formula: if customerID = 1542 then name = "Nick". (Of course, in a GUI you'd use a table to present this data, but presentation concerns are orthogonal to the underlying data model.) |
| 63 comments | |
|
|
Emmanuel Oga
2021-03-06 17:53 #
I have a super stupid question (hard to google) that doesn't necessarily have to to with FoC but I'll risk it :slightly_smiling_face:. I was wondering if there are any lenses or materials that can shift light hues. Intuitively, I think the answer is no, at least not "passively", since that would imply somehow changing the frequencies of the light waves, but I'm not sure. Say those red/blue "3d lenses" only filter the light allowing the red or blue wavelengths to get through, if I get it right. But light is weird and maybe there's something I'm missing, heh This brings me to the meta subject, since FoC has a strict to semi-strict set of rules and I see some zeal in keeping things tidy (which is a good thing :+1:), I was wondering if we could benefit from a #random channel, with a bit more relaxed set of rules :slightly_smiling_face: |
| 6 comments | |
|
|
Jack Rusher
2021-03-05 02:20 #
Weird question, but humor me: what are your favorite JS libraries that are available as ES6 modules? |
| 6 comments | |
|
|
bmitc
2021-03-04 15:57 #
Does anyone know of any references or suggestions for learning more about hierarchical graph data structures, like that found in the link below? https://www.eclipse.org/elk/documentation/tooldevelopers/graphdatastructure.html I’m trying to improve my knowledge of more typical graph data structures, but would love if anyone knows of some good references! |
| 8 comments | |
|
|
Denny Vrandečić
2021-03-02 14:45 #
I always found a wiki an interesting tool in this spectrum of app to document. I made this a topic of a keynote I gave last year - wikis, particularly Semantic MediaWiki as a pay-as-you-go Application Development system. Talk is here, starts around Minute 14 on this topic, but might need context from before: https://www.youtube.com/watch?v=EosGUoucthg |
| 12 comments | |
|
|
Jared Windover
2021-03-02 10:45 #
> If I make an app, I have control and the user can only do what I decide is possible. If I make a document, the user can do as they please, changing it to their own needs @Xavier Lambein posted this here. I think that's a really interesting distinction that highlights a tension in software development. Sometimes as a developer or as a user I want there to be guardrails. Does anybody have thoughts about whether there's a middleground between documents and apps? Can you have the best of both worlds? I'm picturing a system where it's fundamentally, or foundationally a document, but the user has opted in to a set of restrictions that make it into an app. Sort of like Enable/Disable js for the web , but more granular and a richer ontology. |
| 7 comments | |
|
|
Breck Yunits
2021-03-01 20:08 #
Is Andy Matuschak on here? I started reading his stuff recently and really like it. He's got a new post on Tools for Thought that's very good (https://www.patreon.com/posts/ratcheting-in-47976114) |
| 17 comments | |
|
|
Mariano Guerra
2021-02-28 07:17 #
Which dsls to define schemas you like? I'm looking for something flexible/extensible/as-declarative-as-possible. Looking for inspiration, I don't even care if it doesn't run as long as it can be made to run :slightly_smiling_face: |
| 9 comments | |
|
|
Daniel Garcia
2021-02-27 04:49 #
There are, of course, the explicit computer processes which we use, and which our philosophy requires the augmented man to be able to design and build for himself. A number of people, outside our research group here, maintain stoutly that a practical augmentation system should not require the human to have to do any computer programming -- they feel that this is too specialized a capability to burden people with. Well, what that means in our eyes, if translated to a home workshop, would be like saying that you can't require the operating human to know how to adjust his tools, or set up jigs, or change drill sizes, and the like. You can see there that these skills are easy to learn in the context of what the human has to learn anyway about using the tools, and that they provide for much greater flexibility in finding convenient ways to use the tools to help shape materials. I wonder how similar was the term computer programming for D. Engelbart than it is for us today :thinking_face:. From: Augmenting human intellect |
| 2 comments | |
|
|
Kartik Agaram
2021-02-26 11:04 #
Question for @Tudor Girba of https://gtoolkit.com: how often do you end up finding problems in the code for viewing a specific type of object? Like, where you're debugging a specific app and you spend a long time befuddled before realizing that your senses have been lying to you because of a bug in some app-specific view that you wrote. It was hiding some crucial bit of state, or it gets stuck in an infinite loop that hangs the whole system, and now you have to debug the debug system without being able to use the debug system. I wonder if this might be the reason people dislike debug-by-print as well. It is more powerful, but it forces everyone to wrestle with something typically considered the domain of systems programmers: the act of observing getting perturbed by the thing doing the observing. Or as James Mickens eloquently put it: I HAVE NO TOOLS BECAUSE I HAVE DESTROYED MY TOOLS WITH MY TOOLS. (https://www.usenix.org/system/files/1311_05-08_mickens.pdf) |
| 3 comments | |
|
|
Francois Laberge
2021-02-25 07:42 #
Anyone here aware of or experimenting with work focused on making coding/designing on a phone work well? I think about this all the time, I get these coding ideas I wish I could just quickly make or just do doodles when I have my phone but not computer out |
| 9 comments | |
|
|
Tak Tran
2021-02-24 01:06 #
Hi, I’m doing some research into making chatbots, and wondering if anyone knows of existing ways to model the algorithm of a chatbot? I’m also interested in end user programming, so a model that enables that would be ideal. Also, thinking about how to store that algorithm in a declarative, language agnostic way. Any tips/links would be much appreciated :slightly_smiling_face: |
| 20 comments | |
|
|
Florian Cäsar
2021-02-24 00:29 #
On explainability of statistical methods (and their applicability to the FoC, perhaps). "AI" explainability is somewhat hot right now as we've realized that it's hard to make systems these work reliably (and trust their output) if we don't really understand why and how they do what they do. On a larger scale, better explainability could lead to faster iteration, better models and more widespread adoption in areas where uncertainty calibrated output is important. I'm definitely not an expert and mostly focused on NLP, where the majority of research output is measured against various accuracy-based benchmarks with less investigation into the why's & potential biases (though there's some interesting progress like CheckList). • Do any of you have experiences with getting explanations out of statistical systems? @Jack Rusher? • Taking a larger view, any thoughts on how AI might help the Future of Coding (thinking of Codota, Kite, etc.)? |
| 9 comments | |
| # |
Cole Lawrence
2021-02-18 15:15 #
I'm playing around with the interface for an NLP recognition framework at Storyscript (in Rust), and was wondering if anyone has seen this kind of design executed in any other contexts |
| 22 comments | |
|
|
Mo
2021-02-18 12:38 #
Has anyone stumbled upon interesting research around visual statecharts and state machines. Trying to come up with a really intuitive visual that captures the total power of something like x-state (fancy stuff like parallel state machines, recorded history on state machines....) |
| 27 comments | |
|
|
Lucian Ursu
2021-02-17 22:21 #
does anyone know of a knowledge management tool (Tiddlywiki, Roam) that allows you make linkable identifiers in code blocks? for example, if I have this code data Path a = Path Bool [PathSegment a] a I want to make PathSegment linkable and have its definition in another tiddler/block/entry, etc. |
| 7 comments | |
|
|
Lucian Ursu
2021-02-17 02:45 #
Question about how compilers work Is it possible to generate example source code from an AST node and its corresponding lexer rules? |
| 19 comments | |
|
|
Nick Smith
2021-02-16 18:14 #
I've been thinking about an alternative approach to "function calling" (particularly, for declarative languages). Instead of having functions, where every invocation must explicitly feed in every argument, what if: • we define a language that supports only expressions containing free variables, and • we treat invocation as merely (lazy) syntactic substitution, thus arguments are "retrieved" from the scope where the expression is invoked For example, I write let f = x * x (note the absence of a parameter list) and then later write let x = 3; let y = f , which sets y to 9. It's important for the substitution to be lazy, since this retains the semantics of traditional functions, including the ability to make recursive definitions. Given this, I don't believe I'm re-inventing macros, though I welcome enlightenment. You can combine this with the usual nested syntactic scoping rules, so it's definitely not the same as using global variables, or the same as closures (where all the free variables are bound at the definition site). The only practical difference seems to be the UX, and the biggest UX downside is probably readability (which invocations consume which values?), but I'm confident an IDE can make the data flow more explicit. Advantages of this approach: • Certain programs can become much more concise. For example, in drawing code, you can set the drawing color just once, and it will be automatically consumed by all drawing functions (i.e. expressions-with-free-variables) that are invoked in that scope. This actually obviates the "type classes" feature that functional languages often pursue. (Type classes aim to enable exactly this kind of "implicit argument passing", but achieve it in a more convoluted way.) • You've removed the concept of a "function call" entirely from the language. You only need substitution (i.e. referencing). Less features is better, when all else is equal. Disadvantages of this approach: • As mentioned earlier, it may be harder to understand which values are being consumed where. But I'm confident that an IDE can make this clear. (I'm building a language based on ASTs and structured editing anyway, so it's guaranteed to be combined with a sufficiently-smart IDE.) • You need to worry about "accidental variable capture", where a variable which just happens to be in scope is accidentally used by a function (i.e. expression) invocation. I think this is a real problem in languages where variables are identified by text strings, but FWIW, the language I'm designing is not based on text strings, and so can be designed in such a way that a local variable will never accidentally have the same UUID as a free variable found in a function (i.e. expression). In an AST-based language, every function definition should by default use unique UUIDs for its free variables. Only related functions from the same library should share UUIDs, for example the color variable used in a drawing library should be the same across all drawing functions. I'd love to hear others' thoughts. Has this been tried before? Are there additional advantages or disadvantages that I've missed? Is it worth a try? Note that I'm thinking specifically about declarative languages here. Imperative languages may add complications (but may not!). |
| 55 comments | |
|
|
Breck Yunits
2021-02-16 08:24 #
Recommendations for the best CAD software for a condo renovation project? |
| 4 comments | |
|
|
Breck Yunits
2021-02-11 12:30 #
What is the best video editing software? I have an idea for an async way to do zoom conferences, and want to make a single page mockup, but need to copy the UX of the best video editing software out there |
| 13 comments | |
| # |
Stathis Sideris
2021-02-11 06:29 #
The fantastic magit mode in emacs (git integration) has text-based keyboard-driven menus that you interact with either by typing single letters (as shown in the screenshot) or by moving the text cursor over as specific option and pressing enter (which either takes you to another menu, performs an action, prompts you for some input or cycles a setting). The mouse also works, but its use is extremely rare. Is there any UX research into making GUIs keyboard-driven to the extent that the mouse becomes obsolete? |
| 7 comments | |
|
|
Jared Windover
2021-02-09 08:44 #
I was reading an old rfc for Transclusion in HTML, and I noticed this line: > If the source document is HTML and the optional PLAIN attribute is specified, all HTML tags are removed and all SGML entities converted to the characters they represent. This just strikes me as bizarre, that the desired behaviour would ever be to strip out the structure of the source to include it. And I'm thinking that maybe this made sense at the time, and that HTML really was used as a markup language, in the sense that you had a valid plain text document and then you marked it up to add additional information. This just has me thinking about how much the web is held back by attempting to continually adapt this notion of markup, rather than accept that the data is meaningless without the structure. I feel like a lot of semantic web stuff is held back by this. I'm curious what other people think of markup as a concept. Does it apply still? |
| 6 comments | |
|
|
Nick Smith
2021-02-06 16:05 #
What would a language that "always compiles" and "never crashes" look like? Where there is no such thing as a syntax error, type error, or runtime error? Where every text string (or AST) is executable? I'm thinking this can be done with a compositional approach to errors: instead of crashing when a result is undefined (due to syntactic or semantic errors), return an "undefined" value, which in turn poisons all of the expressions it is used within, similar to how NaN works. Would such a semantics have merit? It would let you run incomplete programs (like Hazel), and also let you recover from errors (with the equivalent of an isNaN() function). But perhaps most importantly, it would be a good foundation for a live & persistent programming environment: if there is no need for code to be checked prior to execution, then there doesn't need to be a "compile time". This doesn't make programs harder to reason about: a programmer can still use static analysis tools (incl. "type inference") to understand and enforce runtime behaviour (e.g. verifying/requiring the absence of "undefined"). |
| 28 comments | |
|
|
Mariano Guerra
2021-02-04 10:17 #
Which are purpose specific (as oposed to general purpose) programming languages you know? |
| 17 comments | |
|
|
Will Crichton
2021-02-03 17:09 #
What is the most cognitively complex action that you personally can do subconsciously with muscle memory? Thinking about complex IDE interactions, or advanced command-line usage. |
| 10 comments | |
| # |
Mariano Guerra
2021-01-29 06:39 #
Twitter spent $209 million in R&D in Q3 2020 :thinking_face: |
| 9 comments | |
|
|
Robin Allison
2021-01-27 20:31 #
One of the big ideas I see circulated around this community is the power of spreadsheets. I've used spreadsheets for keeping track of some numbers, but I haven't used spreadsheets in any serious capacity. I have maybe a small sense of what makes spreadsheets compelling, but I suspect I'm missing some things. I'm curious if there are any "canonical" articles out there that describe the core ideas about spreadsheets and their relevance for the future of coding. If not, I'm curious how members of this community came about these ideas, and what we would say those ideas are. |
| 17 comments | |
|
|
Mariano Guerra
2021-01-22 02:20 #
If you could make one niche idea related to FoC into the mainstream, which one would it be? |
| 10 comments | |
|
|
Naveen Michaud-Agrawal
2021-01-20 11:42 #
Question for anyone in the know - was there ever a formal system description of the RealTalk system powering DynamicLand? My current understanding has mostly been pieced together from tweets and a few of @Omar Rizwan's more detailed blogposts. As I currently understand it, the system functions mostly as a federated Linda-like tuple space where wishes and claims are evaluated 60 times a sec and acted upon, and there is a base set of verbs and nouns (mostly related to the hardware) that are implemented in the system. |
| 61 comments | |
|
|
Felix Kohlgrüber
2021-01-20 09:41 #
I was reading some text vs. binary file arguments and one thing that kept coming up was that text files are easier to recover when they get corrupted. I've got a couple of questions regarding this and would like to hear your thoughts: 1. When did you have to deal with corrupted files and what was causing the corruption? 2. How did the corruption look like (single swapped bits, part of the file missing, ...)? My current line of thought is that small errors in binary files could simply be corrected by adding redundency to the format (crc etc.) and larger missing parts wouldn't be easy to recover from in text formats as well. Therefore the argument wouldn't make much sense. I'm curious what you might have experienced as I can't remember to have seen corrupted files in the last couple of years. |
| 10 comments | |
|
|
Shubhadeep Roychowdhury
2021-01-20 05:48 #
I have a question, and maybe it is already something that exists. But I do not know and hence asking here (also kind of food for thought). I was wondering if there is any language which has been designed from ground up to make mathematical formalism as a first class citizen. Precisely I was thinking some kind of way to write set builder notation and then built-in functions to perform and generate (here the generate word is used in a double meaning, think about generators, as some of those operations can generate infinite data) basic operations, such that intersection, union, sigma algebra, and such? It is something I am thinking. As having something like this will open up doors to programming into a lot of mathematical domains pretty accessible. Topology, Measure theory, Order Theory, Category Theory etc. etc. |
| 9 comments | |
|
|
Vijay Chakravarthy
2021-01-16 13:07 #
Well, its not as if you get full programmability at different layers of the stack. Most of the time you have to confirm to specific protocols and data formats, with most of the programmability in a few layers (CPU, GPU, etc..). |
| 5 comments | |
|
|
Felix Kohlgrüber
2021-01-16 04:12 #
Hi there! Here's part two of my "Data Storage for Humans" series: https://fkohlgrueber.github.io/blog/data-storage-part-2/ |
| 1 comments | |
|
|
Kartik Agaram
2021-01-15 22:33 #
Perhaps all programming is distributed programming? This little thread is melting my mind: https://queer.af/@erincandescent/105562630364133151 My mindset for the past 5 years has been that UX = gradual teaching on demand = never lying to the end-user, which implies never telling big lies, only little white lies that are easy to push aside to learn more. But at the heart of everything I did is the big lie that I'm programming "a" single unitary computer. I've always known about many little controllers in our computers, but my mind treated them as exceptions. I think society has this consensual hallucination that software runs "on top of" hardware. The past six months (starting from my old realizations about BIOS: ../two-minute-week/1599112907.014300.html) have been a slow, painful journey to come to grips with this fact. Bat signal to @Charlie; this is fodder for your old thread from May 2019 that most software is built across collections of computers. @Ian Bicking too had a post around the same time that messaging and communication are all, that decomposition is trivial, that focusing on "programming" is often a modernist approach. If we started from the assumption that "coding" is about orchestrating groups of computers, what would we do differently? What does the UX for programming look like if you also have to specify where computations happen? It seems to make Bret Victor's problem much harder. But following Alan Kay, perhaps we don't yet have the "hardest and most profound thing to then build every easier thing out of". I'm also thinking about Dave Ackley's https://movablefeastmachine.org. He started out in security, so he likely knew all this when he started out on his project. You can't secure your computing substrate if you aren't thinking about 90% of the computers in it. Anyways, likely the fever dream will break in a day or two and I'll go back to ~lying to myself~ programming my little computer. But I thought I'd throw this out while it's fresh. |
| 45 comments | |
|
|
Breck Yunits
2021-01-13 08:51 #
I'm looking for a 3-D Legos simulator. Some 3-D Library where I can programmatically generate a 3-D scene of legos, and generate animations of those legos moving. I have limited experience using 3-D libraries. Does anyone have any pointers to libs or software I should look at? |
| 14 comments | |
|
|
Felix Kohlgrüber
2021-01-09 06:04 #
Hi, I've been thinking about how end-users store and backup their data lately and came to the conclusion that there's currently no really good solution for it. I've written a blog post about the topic and would be interested to hear your thoughts. I have a couple of ideas how my dream system would look like and have started building a prototype. I hope to find time to write about that soon. Here's the post: https://fkohlgrueber.github.io/blog/data-storage-part-1/ |
| 14 comments | |
|
|
Cole Lawrence
2021-01-07 17:02 #
Hello, I'm trying to wrap my head around the implementation for a platform for developing self describing "services" or as we might call them "drivers". The basic lifecycle of a "driver" is essentially: 1. Driver describes Service registration requirements: Announce what registration info (keys, permissions, web-hook URLs, etc) it needs to register 2. User adds Service: Register an instance of Service X by providing "registration info" that were asked for by the driver 3. Driver describes Service interfaces: Use "registration info" to imperatively declare its interfaces (I have these functions, that take these types, that provide these representations, etc) 4. User can begin using this Service from their own code. This cycle exists to enable something like registering an Airtable database through a driver. We aim to allow for generative interface based on the Airtable's columns. You could just as easily replace "Airtable" as an example with an "SQL DB driver" even. The main problem I'm wrestling with is mostly in how I would design the Driver SDK for step "3. Driver describes Service interfaces". In some respects, I want to allow the SDK developer (myself and my team members for now) to have a lot of flexibility with how they end up describing the Service interfaces & provide that service interface's implementation. But, when it comes to considering how deployment, versioning, and development and debugging for SDK dev I feel quite naive. Does anyone have reference material or admirable examples of this kind of problem? Even things adjacent could be very inspiring. cc @Garth Goldwater @Chris Rabl @taowen P.S. This seems tangential to: reflective type systems / declarative type providers (like building FSharp Type providers); VS Code Language Server protocol; game dev modding; and maybe #of-glam-school. |
| 9 comments | |
|
|
Shubhadeep Roychowdhury
2021-01-06 04:25 #
My critique on DALL.E (The new text to image models from OpenAI) - https://www.linkedin.com/posts/shubhadeep-roychowdhury_right… Any thoughts are welcome! |
| 9 comments | |
|
|
Andreas S.
2021-01-06 03:44 #
Has anyone here read this book? https://www.goodreads.com/book/show/79678.Technopoly#:~:text… |
| 3 comments | |
|
|
Nick Fox-Gieg
2021-01-03 12:02 #
The Darmok-ization of the discourse continues |
| 1 comments | |
|
|
Nick Fox-Gieg
2021-01-03 12:01 #
Haha so yesterday I was trying to paraphrase Franklin to explain the problem of teaching holistic technologies like prescriptive technologies...today I can just say "bean dad." |
|
|
Nick Fox-Gieg
2020-12-31 10:53 #
I guess what I'm trying to say is, Flash was a holistic tool, and holistic tools seem to be critical to good teaching. |
|
|
Nick Fox-Gieg
2020-12-31 10:53 #
Ursula Franklin has a bit about the difference between "holistic" technology, where a single generalist can learn the process from beginning to end (regardless of whether they do the work alone or in a group)...vs. "prescriptive" technology where the process needs to be broken down into steps to be carried out by multiple specialists, and no individual specialist can go through every step of the process themselves. |
| 2 comments | |
|
|
Nick Fox-Gieg
2020-12-31 10:52 #
The final 24 hours of Flash's death clock seem like a good occasion to think about the non-linear nature of art-making tool development. I suppose I'm a technological determinist, and the larger forces that hashed out browser standards--nurturing Flash for a time, and then abruptly extinguishing it--don't seem all that historically different from, for example, the 1979 global silver shortage, which by suddenly raising the price of film stock greatly accelerated the shift to video. |
| 6 comments | |
|
|
Duncan Cragg
2020-12-30 13:14 #
Non technical? Second call for any of you who missed the first call! If you're not a techie, or have access to someone who isn't, would you be kind enough to cast your normie eyes on this page for me: http://object.network/ ? Bear in mind it's aimed at folk who are all wound up tight about the issues listed up front, so if that's not you, pretend you are! :smile: (in fact, why aren't you?) Feedback is much appreciated, so go for it! I'm tough. :face_with_head_bandage: |
| 11 comments | |
|
|
Emmanuel Oga
2020-12-26 16:04 #
ANTLR v4 is the result of a minor detour (twenty-five years) I took in graduate school. I guess I'm going to have to change my motto slightly. http://media.pragprog.com/titles/tpantlr2/preface.pdf I wonder how this resonates with people on this community. On the one hand I love building tools, but in the other, there are so many apps I want to build... I don't necessarily want to spend a lot of time building a "generalized problem solver" for each instance of the problem I want to solve. As seen in ANTLR example, building a general tool can take years. OTOH I'm grateful of all people that have spent so much time in building amazing tools like ANTLR. |
| 7 comments | |
|
|
Christopher Galtenberg
2020-12-22 10:19 #
Looks like a CPU. Node-based programs should dream of being laid out on nice clean (spread)sheets. Building new programs upon programs / processes upon processors. https://twitter.com/geoffreylitt/status/1341426983767519232 |
| 6 comments | |
|
|
Harry Brundage
2020-12-20 18:09 #
for those that have used node and wire programming systems frequently, how often are both your hands on your keyboard vs only one? been watching a designer colleagues hand movement recently and it's super interesting how different it is than my own, and that designers don't seem to complain about having to move back and forth that much. I think drawing boxes (or if you take it all the way, AutoCAD style work) with a keyboard is a non-starter, and they're only typing rarely, so they end up with mouse hand for the fine inputs and keyboard hand for tool selection or chords |
| 3 comments | |
|
|
Garth Goldwater
2020-12-19 08:27 #
i was thinking today about aspect oriented programming, rails hooks, and synergies in video game strategies (eg: water type attach + your water type attacks now also strike lightning bolts + your lightning bolts have a chance to strike twice). it seems like a lot of power comes from the ability to split out concepts into distinct modules but then combine them causally. my understanding of hooks and AOP is that they were hard to reason about because ordering becomes very sticky (eg: after you save a post by the user, update the user’s post karma rating). it seems like those techniques are actually looking for some kind of constraint solving approach that’s worked directly into the language. does anyone know of papers or projects on this topic? |
| 14 comments | |
|
|
Duncan Cragg
2020-12-13 11:35 #
Oi! Kartik, you've scrolled me right above the fold! :smile: > Are there any non-techies here? I need to talk to you! :smile: |
| 2 comments | |
|
|
Kartik Agaram
2020-12-13 11:18 #
I'm at an impasse with my project of a live-updating postfix programming environment (../two-minute-week/1607329853.147000.html) and would appreciate some UX ideas/feedback: I do have one more idea for an interesting demo: supporting APL-like array operations. But I'm not sure if I should go down that road if there are potentially fatal problems with this whole approach. A Mu-specific constraint here is the lack of a mouse. My UI has a single point on the screen where I can manipulate things. There's no mouse, because mouse support in text-mode terminals is non-standard and requires understanding differences between terminals. Which requires dependencies beyond a Linux kernel. That's something I've managed to sidestep so far by staying extremely lowest-common-denominator in terminal capabilities. Perhaps I'll switch gears and focus on getting off the Linux kernel. Then I won't need to worry about terminal compatibilities. But then people would be required to use Qemu to play with Mu. Which sucks :confused: Perhaps that's the fundamental psychological block here: I want to keep Mu easy to try out, but beyond a point I can't undo bad historical decisions without adding some friction to checking it out. Then again, it's not like many people try it out anyway, and requiring Linux is just as much friction for someone on a Mac. Yeah, perhaps there's more OS hacking in my future. Thoughts/suggestions appreciated on this angle as well. |
| 22 comments | |
|
|
Duncan Cragg
2020-12-13 10:36 #
Are there any non-techies here? I need to talk to you! :smile: |
| 53 comments | |
|
|
Emmanuel Oga
2020-12-11 08:43 #
For all the love hypertext receives, I have a great gripe against it: learning through hypertext requires breadth first search over a sea of links. Documents provide a single-hop link, and it is the reader's job to keep jumping through links until finding all the pieces needed. DITA is a document format that encourages reuse of document snippets. I think reuse is good in moderation but as much as I'd love each document to be as self-contained as possible, repetition generates extra work for the reader of skipping known pieces (imagine a book where each chapter had 50% repeated paragraphs...). If repetition is involved, it would be nice to track which snippets I've already seen, and possible hide them. In general, I'd rather authors provided a trail of links (so the extra hops along documents) to cut the search space. It would also be nice to have better "memory" of the places I visited. Currently browsers simply change the color of visited links, but I'd love to know which "trails" that link belonged to, how long ago I visited, etc. In short, I'd like the experience of navigating hypertext to feel like I have a mentor next to me pointing me to relevant places, encouraging me to not worry about the sea of irrelevant information, etc. |
| 16 comments | |
|
|
Kartik Agaram
2020-12-10 06:43 #
Larry Tesler and NOMODES > During Larry's time in Xerox PARC there really wasn't such a thing as personal computers. At the time, software interfaces were designed around modes. In a text editor you couldn't just start typing and have words appear on the screen.. Larry pioneered the concept of software user studies, and found that many people would fail to get comfortable with the computer even after many weeks of use. And he believed that these modes were to blame, and they represented a threat to the dream of what personal computing could be. > > So Larry made it his personal mission to eliminate modes from software. And he formed a principle. No person should ever be trapped in a mode. His slogan that he'd go around saying is, "don't mode me in." And his website is called: nomodes.com. -- Bret Victor, 2012 (https://www.youtube.com/watch?v=PUv66718DII) I've been thinking about this a lot for a few weeks as I take my first hesitant steps into UI design and find myself immediately creating modal dialogs. What are people's opinions on the priority of modelessness relative to the other considerations we often discuss here? For example, my UI tries to follow a couple of other principles Bret Victor likes. It minimizes interaction and always shows the complete state at a glance (http://worrydream.com/MagicInk), and it tries to reduce the need for the human to "play computer". Following Christopher Alexander, it tries to keep the display fairly stable and slow-changing. But. It has modal dialogs. 3 so far and counting. Once you bring one up, it's like a database transaction and you have to either commit or roll back. My current thinking: it's ok if the time spent in a mode is short. A word seems short. It's not a huge hardship if you have to retype a word. Most of the time, words you type appear on screen. But I also notice that browsers used to bring up modal dialogs for say searching for a word on a page, and now they do so in a non-modal way where the panel pops up above or below the page while allowing you to interact with the page. I'm in text mode, so there's a fundamental limitation of only ever being able to interact where the cursor is. Perhaps that's the fundamental 'modefulness' here? I'm curious to hear what others think, and what stories people have about their experiences trying to avoid modes. |
| 35 comments | |
| # |
elvis chidera
2020-12-07 07:24 #
Working on a low-code project for native apps. The idea is predicated on the argument that many apps are just "skins around a database". Why is declarative UI + declarative queries a bad idea? For example we create a todo app like this: |
| 14 comments | |
|
|
Emmanuel Oga
2020-12-06 06:00 #
thinking about better auto completion (a wizard style of auto completion instead of the typical list of options) |
| 16 comments | |
|
|
Nick Smith
2020-12-05 22:46 #
Have people seen many programming languages where Sets are represented as functions from X → Bool and (more importantly) Lists are represented as functions from Int → X? And I mean they're truly just functions: all of the operations upon them are just operations upon functions, and thus they might be repurposed for other uses as well. Javascript and Lua kind of do this, except their philosophy is more like "all collections are just dictionaries", where a dictionary is a heavily-restricted class of function. This approach ("all collections are just functions") seems like a versatile foundation (especially in the context of the semantics of the programming language I'm working on), so I've been digging into the ramifications of it lately. My biggest challenge so far is figuring out how to identify for which functions operations like set union and intersection are computable. Depending on how the function is constructed/defined, it seems like it could be quite hard to figure out a static "safety check". I want these operations to be well-defined even on recursively-defined functions, so it's not as simple as "ensure the function definition is just a finite list of cases" (i.e, a dictionary). This doesn't seem unreasonable: Datalog works this way. Datalog predicates are recursively-defined functions from X → Bool (i.e. sets) that obey certain constraints so that queries upon them are answerable. |
| 16 comments | |
|
|
Tyler Adams
2020-12-01 15:06 #
I've been thinking a lot about testing methodology recently because I'm writing a piece on my blog about it, and I realized this community must have a ton of things say about it, especially theorizing the fundamentals. I care about this a lot because in my experience a lot if not most time is spent testing, and doing testing better is a serious productivity improvement. For example, when should tests be deterministic vs random? When should one use unit tests vs integration tests (I suspect it's much deeper than "lots of unit, few integration") |
| 9 comments | |
|
|
Breck Yunits
2020-11-28 08:18 #
Are there languages where files are functions and imports are parameters? I am annoyed with file path issues when building typescript. When I try to build the same exact files with tsc, webpack, jest, or yarn, I get 4 different results. Are there any languages out there where a file is a function that takes parameters which are the paths to its imports? Where you don't include a file, but call it? Built-in dependency injection at the build level? ie: // main.foo printLib = printLib ?? "a_default_value_for_print.foo_import" printLib.print "hello world" // project.build main.foo(printLib = "print.foo") |
| 4 comments | |
|
|
Kartik Agaram
2020-11-25 18:54 #
An old thread I wish I could link to: > Consider the powerful, time-honored environment that gives us many “small programs, each doing one thing well”, the Unix shell. There is a cut command, a sort command, and many more. A versatile collection of blocks that I can snap together in different ways (yay pipes!). There isn’t much duplication of commands and the environment seems to have nice composition properties. > > But it only goes so far. > > If I write a program in Unix using Java or Python, can I reuse the Unix sort to sort an array of items inside my program? Of course not, what an improper question! The decent choice is to reimplement sorting in my program (or use the standard library where someone else has already re-implemented it). > > The computer already knows how to sort things, why do I need to tell it again? -- @Shalabh (https://shalabh.com/programmable-systems/on-composition.html) From the inventor of shells: > I felt that commands should be usable as library subroutines, or vice versa. This stemmed from my practice of writing CTSS [OS] commands in MAD, a simplified Algol-like language. It was much faster and the code was more maintainable than IBM 7094 assembly code. Since I needed MAD-friendly subroutine calls to access CTSS primitives, I wrote in assembly code a battery of interface subroutines, which very often mimicked CTSS basic command functions. I felt it was an awkward duplication of effort. However, I did not go further in the context of CTSS. -- Louis Pouzin (https://multicians.org/shell.html) |
| 44 comments | |
|
|
Kartik Agaram
2020-11-24 23:34 #
What should the right notation be for the rotate (circular shift) operation? This seems like an important question since the operation is common in cryptography, and since the ARM instruction set goes to great lengths to allow any instruction to perform it. But apparently there's never been a good notation for it: https://stackoverflow.com/questions/32785998/symbol-for-bitwise-circular-shifts Desirable properties: |
| 17 comments | |
|
|
Breck Yunits
2020-11-24 18:57 #
Anyone have a good algorithms for minimum 2-dimensional diff? Input is 2 trimmed and clean CSVs (files don’t end in \n; lines don’t end in ,; no quotes or escaping). (one note: There often is a varying number of columns in rows) Example, given the 2 inputs below, write efficient diff and patch methods and a nice diff encoding. rank,color A nice diff format would also be helpful. Can’t seem to find much on this yet, but there must be some stuff out there in the Spreadsheet/Finance world. |
| 4 comments | |
|
|
Chris Martens
2020-11-24 09:25 #
|
| 1 comments | |
| # |
prax08
2020-11-22 13:15 #
I don’t really know if this is question that belongs in FoC, so please feel free to moderate and remove this if it doesn’t fit the ethos. Here is the scenario: I am trying to gather resources that talk about hypergraphs/intertwingled style resources for a tweet thread I’m running: https://twitter.com/prathyvsh/status/1330063701802700800 Can you guys think of any examples in computation or in any other domains that talk about this idea of having a lot of recursive/reflexive structures? These are the ones I could find so far: |
| 13 comments | |
|
|
Mariano Guerra
2020-11-21 07:17 #
Still thinking about the "present - future of coding spectrum", is building tools to make it easier to build docs/pages like this something that falls on the FoC spectrum? https://stripe.com/docs/checkout/integration-builder |
| 8 comments | |
|
|
Aria Minaei
2020-11-19 12:15 #
This is from Neil Postman's Five Things We Need to Know About Technological Change: > The printing press gave the Western world prose, but it made poetry into an exotic and elitist form of communication. It gave us inductive science, but it reduced religious sensibility to a form of fanciful superstition. What does he mean by "reduced religious sensibility to a form of fanciful superstition?" Was religion in a more enlightened form before print culture? |
| 18 comments | |
| # |
Mariano Guerra
2020-11-19 03:53 #
Where does FoC fit? or are we in a pink plane? |
| 10 comments | |
|
|
Lucian Ursu
2020-11-19 01:00 #
Does anyone have any resources about syntax highlighting? I’m looking to answer questions such as: How do you decide which terms to highlight? How to use color to help readability? |
| 1 comments | |
|
|
Kartik Agaram
2020-11-17 19:27 #
@Will Crichton's expressiveness benchmark[1] reminds me: Watching this talk helped me realize why I never really got the Felleisen paper: their notion of "expressiveness" is almost diametrically opposite what I (and, I think, most people) associate with the term. https://pwlconf.org/2019/shriram-krishnamurthi As an almost trivial example, they say that a for loop is not more expressive than a while loop, because it can be rewritten with a local transform (Lisp macro). I consider it more expressive because it creates a new structure for loops that allows us to reason about updates separately from the body. Lisp macros are powerful because they allow my program to get progressively more expressive. Isn't this the normal meaning of the term? A more expressive language helps you express intent more tersely. The paper is cool. But they need to get off my lawn and find a new term for themselves. See also https://en.wikipedia.org/wiki/Expressive_power_%28computer_s… [1] https://willcrichton.net/expressiveness-benchmark |
| 14 comments | |
|
|
Prathyush
2020-11-16 18:39 #
Interesting formalism here: http://danghica.blogspot.com/2019/05/the-essence-of-impure-computation.html |
| 3 comments | |
|
|
Mariano Guerra
2020-11-16 04:21 #
Something I just thought that I hope is taken as constructive criticism: I think the Hand Made Network is doing much more for the future of coding than this community. My quick take on what's the issue is that they take the tools they have (mostly C and C++ from what I've seen) and fix issues they have with a focus on simplicity, Architectural Astronauts don't seem to get enough karma there to stay in the community. Also by generating usable projects and caring about actual users now and not imaginary ones in the indefinite future. Is this an incentives/objectives/organization issue? or I'm just wrong? :slightly_smiling_face: |
| 84 comments | |
|
|
Christopher Galtenberg
2020-11-13 21:40 #
I wish there was node-based programming that wanted to be a mind-map more than a working gizmo. It seems deeply inspired by mind-maps, but also seems happy to leave the "thought space" behind pretty quickly in favor of the work-space. Yes we want to see our ideas "work", but sometimes the thrill is in the ideas themselves, adjacent possibilities, the model, the schema. The code, the wires, the implementation, those are often much less exciting — we know we can make those work, they're rote. Mind-map software itself has very little ambition, little automation, shockingly little creativity, which is beyond ironic. On the other end, I don't really need something that compiles and runs. My mind can "compile and run" lots of things — even given fragmented and incomplete material. It loves that, in fact. I guess what I want is fewer Turing machines and more mind bicycles. |
| 9 comments | |
|
|
Srini K
2020-11-13 05:42 #
This thread’s discussion (on Apple + privacy) was interesting to me: https://news.ycombinator.com/item?id=25078034 Nobody really suggested the alternative being end-user + true personal computing. The analogy I use is that what we call ‘personal computing’ is really restaurant made food delivered to our homes very quickly (vs true personal cooking where I can make the food I want at home using tools that are personal-human-scale). The common answers to centralized computing / centralized internet like handwaving ‘decentralized’ or ‘p2p’ or ‘open source / libre’ I strongly feel are WORSE options for most people (minus the philosophy). That’s like taking a restaurant kitchen & food-assembly-line and putting it on every street corner for the neighborhood to run (for most people this is worse than a regular restaurant). (the analogy isn’t perfect I know!) Personal, home cooking is fundamentally different than restaurant made food in qualitative ways that make it appealing in its own right and not let people get caught up in their ‘resistance’ of centralized restaurants. The other great insight from food industry is that centralized food creation and personalized food creation can co-exist just fine, and people can move between both systems as they please. |
| 21 comments | |
|
|
Shubhadeep Roychowdhury
2020-11-13 01:29 #
A small question, do we have a channel to share some fun / light things about computing (some meme or something) or you guys think it will pollute the Slack? |
| 6 comments | |
|
|
Chris Knott
2020-11-12 05:13 #
Are there any languages/compilers in existence which perform optimization steps while staying in the high level language, and makes these steps visible to the user? For example, instead of compiling from a tail-recursive C function, directly to a loop in assembly, it first optimises to a loop in C, then the translation to ASM is a dumb single-pass compilation. For example, this (contrived) tail call elimination is quite hard to follow if you are expecting function calls to appear in the assembly https://godbolt.org/z/jhecj5 You could have a compiler that first said, "You code is equivalent to this code" https://godbolt.org/z/3v6ezj - which is easier to see why it compiles to those same instructions. |
| 6 comments | |
|
|
Jarrett Atkinson
2020-11-11 11:55 #
Sort of along the lines above, is it possible that what people are looking for with static types is an additional alternative view of a function? I've found very little reason for types in my work from a compiler perspective, but it does often occur that I see a function name and argument list without knowing what to do with it. e.g. the following: (map (fn [price-bracket] This could alternatively be shown as [[{whatever keys} ...] ...]Which, along with a name is far faster to grok and read past |
| 12 comments | |
|
|
Chris Rabl
2020-11-06 13:26 #
I was just pair programming with one of my team members and we were trying to reason about the implementation of a particular code snippet, but we kept getting bogged down by the actual implementation details rather than the “high level” process design (bad/outdated names, obtuse API calls, all the usual suspects). Out of sheer frustration, I copied the snippet (~100 loc) into a blank text document, replaced all the variable names with sentences describing what they contain, replaced all function calls with a description of what the function does and the data it operates on, and then sent it back. I left in syntax like variable declarations, return statements, array destructuring operations and array methods (map, filter, etc). Within 5 minutes we were able to have a reasonably productive conversation about the process and how we could refactor it, and it just seemed like it really “clicked” for both of us. It was the closest experience I’ve come to in terms of having a “shared mental model”. So I’m curious: is there anyone in this group working on tools for writing and reasoning about pseudocode? |
| 10 comments | |
|
|
Andreas S.
2020-11-06 02:27 #
I have a problem and it goes like this: I need to implement a client for a client-server interaction over a specific protocol. Now I only have a loose document ( yeah I Know..) which documents the protocol. How would you approach to implement the server? I mean can you share any experiences similar or ideas on how to test the Interaction as "best" as possible? How would you test client - server interactions in general? using queues and state machines? When I'm trying to google for potential solutions or advice I'm "seeing" by the quality of the results that I don't use the right search terms. Any resources or advice appreciated! |
| 7 comments | |
|
|
Mariano Guerra
2020-11-02 04:01 #
What do you think about a "FoC fund" where FoC members agree to give X (5?) dollars a month to the FoC fund and then paying members can vote on projects to fund? (I guess each project can access a max amount of money/months per year) The best way to predict the future is to fund it |
| 31 comments | |
|
|
Mariano Guerra
2020-10-28 10:55 #
what language/environment would you design if you assumed a computer with 1TB of RAM, 1PB of disk and 1024 cores? |
| 33 comments | |
|
|
Stefan Lesser
2020-10-24 21:58 #
I’ve become one of the fifteen students in this year’s Building Beauty and Beautiful Software Initiative — the postgraduate course on Christopher Alexander’s Nature of Order with an additional seminar for “computer people” to find out how to transfer his ideas into the software industry. It’s been a busy first three weeks and I’ve already learned a lot, which I hope to share eventually. I’m even more convinced now that Alexander has figured out a deep truth about designing and building beautiful things that absolutely needs to be adapted to the software world. I’d love to invite those here who are interested in Alexander’s work to connect so we can attempt to bridge the two communities — in which way exactly I’m still contemplating and open to suggestions. At least I wanted to start a thread here which could become anything from an AMA about the course to a beacon for those who’d be interested in activities that might happen around this topic spanning both communities (I could picture an online event bringing us all together). If you want to be part of that, leave a comment in the thread and feel free to suggest ideas or ask me anything… |
| 49 comments | |
|
|
Robert Butler
2020-10-15 23:06 #
I'm in the middle of writing an assembler for uCISC in uCISC assembly (bootstrapping a language is fun). I'm happy with the progress I'm making, but a few things are standing out. 1) structuring the code is challenging since I don't yet have the higher level language paradigms (don't even have function syntax sugar at the level I'm at right now). 2) stack counting is tedious and I constantly get it wrong. I'm wondering if there are any resources, techniques or ideas on how to structure assembly code effectively. I feel like this may be a bit of a lost art. |
| 7 comments | |
|
|
Christopher Galtenberg
2020-10-12 14:00 #
Paleo-FoC is: 1. Text-scripted ^ 2. Solo * 3. Offline * 4. Ready to run / No toolchain required / Batteries included 5. Save & Share via single file 6. (what else?) BASIC is the exemplar. Unix script and .BAT. Many lisps. HTML/CSS, js (works fine offline). See notes how HyperCard and VB fall in. Smalltalk, sure. (Thoughts on typical /bin languages like perl, python, ruby below - they start paleo but can easily become programmer-only.) |
| 26 comments | |
|
|
Harry Brundage
2020-10-07 06:58 #
Has anyone seen any paradigms they really like for keyboard-navigating big, abstract mediums that aren't text? i really like how text can be keyboard navigated easily. Where your cursor + attention is about to go is always clear and we've invented lots of ways to accelerate getting your cursor to where you want it to go. How does that play out in things that aren't text though, like all the flow based languages we're seeing, or tools like Webflow that are trying to make it fast to create trees of stuff? Are we destined for slower mouse based interfaces that don't leverage muscle memory as much? |
| 29 comments | |
|
|
Oleksii Shmalko
2020-10-04 12:10 #
I'm experiencing a minor burnout at work, so I've decided to work less and spend more time on my side projects, hang out with people, and do more fun in general. My question: what motivates, excites, and inspires you? (thoughts, personal stories, or specific links are much appreciated) |
| 8 comments | |
|
|
Jason Hobbs
2020-10-02 13:58 #
Do you know of any resources that attempts to outline the various things a developer holds in their head while working on task x? |
| 12 comments | |
|
|
Will Crichton
2020-09-30 17:04 #
I was reading Fred Kjolstad’s thesis (http://fredrikbk.com/publications/kjolstad-thesis.pdf) about compilers for sparse linear algebra. He says: > The issue with libraries of hand-optimized functions boils down to our inability to easily build composable building blocks that perform well. Current sparse linear algebra libraries do not let us compose expressions, data structures, optimization strategies, and architectures without sacrificing performance. The first performance loss is from lost temporal locality—a deficiency that is also present with dense operations. Second, sparse operations may operate on many different data structures, which are each designed to work well on one type of sparsity pattern. If two composed functions do not support the same data structure, then it becomes necessary to perform an expensive conversion between irregular data structures. But the most serious issue is that composing two sparse linear or tensor algebra functions may perform asymptotically worse than a fused function written to compute the entire expression at once. This made me think more generally about the composability vs. performance trade-off. Being able to compose black box abstractions at a high level is at the very foundation of software engineering, enabling programmers to eliminate boilerplate and more easily use others’ work. Yet composition is the enemy of performance: a careful implementation that fuses two operations is often more efficient than a sequenced invocation of the two. However, most compilers today only offer #[inline] pragmas or other extremely shallow means of reducing abstraction/composition costs. Even the most advanced C++ template magic can’t do the necessary code-reordering to achieve the optimal composition that Fred describes. Several programming systems have good ideas in this direction: • Zero-cost abstractions in programming languages (eg Rust https://blog.rust-lang.org/2015/05/11/traits.html) • Separating algorithm from schedule (eg Halide http://halide-lang.org/) • Using higher-order functions to express data parallelism (eg Spark https://spark.apache.org/) Curious to hear others’ thoughts (how will we manage this trade-off in future langs/compilers?) and pointers to relevant work. |
| 2 comments | |
|
|
Andrew Carr
2020-09-30 15:08 #
I'm not sure how to phrase this question. I've been thinking a lot about "bit rot" recently. For example, will we reach a point where there are no DVD players that can decode the disks? Or where there is no existing program to read PowerPoint presentations? Is this a likely eventuality for systems? Should everything be txt files to avoid this? Are we going to have our period of history with large gaps from this bit rot problem? Can we as programmers do anything to avoid this? |
| 9 comments | |
|
|
Mariano Guerra
2020-09-30 05:29 #
What's the future of side effects? |
| 29 comments | |
|
|
Denny Vrandečić
2020-09-28 14:58 #
Hi all! I am working for the Wikimedia Foundation where we are starting to work on a new project [1]: a wiki of functions (name is currently being discussed by the community) [2]. Imagine that for every function, you have on wiki page, where the wiki page describes what the functions does, it's formal parameters (input types, output types), etc. Each function can have several implementations associated with it (which can be built either from other functions in the wiki or be natively written in a programming language, and we plan to support many of those) and also tests. Maybe the best way to understand the project is to take a look at some of the early mockups. [3] The functions are meant to be functional, i.e. not to rely on state (well, not too much - they are able to call out to the Web, e.g. to look up information in Wikidata, etc., so in some way, the Web does provide state. We will need to figure that part out. There's a lot of open questions around that). The type system is also in the wiki, so that it is extensible by the community. We are in very early development (and, in fact, hiring!) [4] I am happy to answer any questions, but I would love to invite folks to join us, either for discussing the project, help working on it, or ask as hard questions and think about how to solve it. [5] A preprint paper with background can be found on Arxiv. [6] The paper has been accepted, but not published yet. Happy to answer any questions here, and to have discussions about what we are doing. In the future I expect us to have many questions like "what is a good exception system", "do we need a type hierarchy", "what should the UX for the project do", etc., so would love to have a place for that. [1] https://meta.wikimedia.org/wiki/Abstract_Wikipedia [2] https://meta.wikimedia.org/wiki/Abstract_Wikipedia/Wiki_of_f… [3} https://meta.wikimedia.org/wiki/Abstract_Wikipedia/Early_mockups [4] https://boards.greenhouse.io/wikimedia/jobs/2338515 [5] https://meta.wikimedia.org/wiki/Abstract_Wikipedia#Participate - links to mailing list, chat, etc. [6] https://arxiv.org/abs/2004.04733 |
| 25 comments | |
|
|
larry
2020-09-26 12:33 #
I don't really understand Roam, although it is favorably mentioned here frequently. I tried a couple of videos but quit after 15 minutes when all they've demod is linking between notes. It seems like watered down NoteCards, with a (really) nice UI. Everyone here is probably familiar with NoteCards but if not, the first two linked papers are very good. https://en.wikipedia.org/wiki/NoteCards |
| 5 comments | |
|
|
Srini K
2020-09-25 08:07 #
I’m a data scientist by background, and a lot of this PL stuff is new to me. However, I think data science is an interesting use case for innovation in PL. The most common use cases are a bit more bounded and well defined, the persona base ideal (people who just wanna do data stuff, not program), and there’s a non-PL success here already (Excel!). • Are there others that are motivated by this data science use case / working on it? I know Instadeq is here, I’m sure there are many others. I’ve chatted with Erik Blakke about his Ultorg system. • Why haven’t we seen a good live programming language for data science? It’s so ideal for it! Everything from sampling / streaming in data results to keep things live to the fact that data analysts / scientists want to move / iterate at the speed of thought, and most of data science is this type of curiosity driven stumbling around the data-dark |
| 57 comments | |
|
|
Will Crichton
2020-09-23 18:06 #
A big issue in programming is that a program is an extremely lossy record of history. Even with good comments, it’s hard to look at a program and know: • What are the alternatives that were considered, but ignored? Tried, but later discarded? • What order was this program written in? Is a particular line or function the focal point of this code? • What is the set of resources the author used to write this code? • How weathered is this code? How many bugs have happened in this code? How scared should I be to change it? What are some ways in which programming environments could help us record this info / answer these questions without requiring additional effort from the author? |
| 38 comments | |
| # |
Gray Crawford
2020-09-21 12:57 #
Have there been similar approaches to this style of formatting? |
| 11 comments | |
| # |
Kartik Agaram
2020-09-20 16:43 #
I've been noodling for the umpteenth time on a representation for programs that reduces the need to "play computer". My post last night on #two-minute-week (../two-minute-week/1600587602.007800.html) triggered enough unexpected thinking together to get me to write up my recent attempts and try to trigger more. We all simulate programs in our heads. The activity seems to break down into two major use cases: The forward path fits very well with ideas like starting with concrete examples and emphasizing data at all times. Nobody should ever have to start with a function definition. Instead, start with an example computation like: 18 * 9/5 + 32, and incrementally end up at a function like celsius-to-fahrenheit. The backward path fits with various metaphors for debugging programs. Debug by print, debug by step, time-travel debugging. A key concern is how to uncoil static computations (loops, recursion) into dynamic metaphors (traces, stack frames, interactive movements). Postfix expressions fit beautifully with the backward path. As the demo of Brief (https://www.youtube.com/watch?v=R3MNcA2dpts) showed, execution is already quite uncoiled, with no backward jumps. While the Brief demo didn't show it (it's easy to spot where the presenter plays computer in their heads), it's reasonable to imagine a way to drill down into function calls, replacing words with their definitions. By contrast, conventional expressions -- tree-shaped and using names -- immediately throw up impediments in understanding what happens first. However, the forward path is thornier: 1. It's common to claim that point-free programs make it easy to factor out new definitions, but that's only true when the definition consists of consecutive words. Consider how you would go from * 3 3 to a definition of square, or from 3 4 + 5 * to a definition of (a+b)*c. 2. After they're extracted, point-free functions are harder to understand. What does the stack need to look like at the start? How many words, what types, how many words consumed, all these questions require simulating programs in your head. Or a manual comment. This was the idea maze in my head until I saw LoGlo (https://loglo.app/2020-06-16). The cool idea here has taken me weeks to articulate: lines have names and get separate stacks. Forth typically writes to names within lines with words like !. Limiting definitions to one per line strikes me as an advance. And having names gives us a way to make Forth words less point-free. I start imagining flows like turning * 3 3 into * x x using two 'rename' operations, and then turning the entire line into a new function. Like, imagine a UI with a code side on the left, and a scratch computation on the right: │ After defining a function it might look like this: │ Notice how the definition of x: above gets replaced by the call to sq below. That's kinda pleasing. But there's issues. This manipulation requires modifying definitions of free variables. Worse, I ended up with the function call in prefix order. Trying to make things consistent got me stuck up on a tree with a 2D layout until I noticed I'd lost the benefits of postfix that got me on this road in the first place. I'll include it here just in case it sparks ideas for others, but I'm starting to think it's a dead end. Anyways, that's where I am, still looking for a representation that's easy to uncoil and where inlining function calls is a 'smooth' visualization. |
| 28 comments | |
|
|
Nick Smith
2020-09-15 21:44 #
Who here is working on a logic programming system? I feel if there are a few of us it could be nice to form a little subgroup to share questions and ideas that require a background in logic programming. Perhaps there are not many of us, though. |
| 18 comments | |
|
|
Roben Kleene
2020-09-15 11:51 #
In the thread I started asking why programmers don't program more for themselves (1599588394.135900.html thanks for all the interesting responses everyone! I largely came to the conclusion that they do program for themselves, it just takes the form of personal sites and side projects, rather than the type of thing I was looking for), I got a couple of requests for some examples of what I mean, so I decided to start a thread to share customizations. There are three categories I had in mind when I started that thread: 1. Using programming to support software development with things like continuous integration, and automated testing (these are both actually popular, but in my experience programmers tend not to like working on them very much). 2. Solving problems programming problems programmatically, e.g., writing shell scripts or using text editor marcos (https://www.emacswiki.org/emacs/KeyboardMacros) to perform a refactor that isn't supported by refactoring tools. 3. Writing scripts and customizations to help improve your own personal workflow. I think of those three, only the last one that I think only #3, personal customizations, needs examples to understand, so that's what this thread is about. I'm going to try to share a mix of things that I think would be helpful to any programmer, and things that are very specific to my own workflow. I'd love for anyone else to share their own customizations. I'd also love to hear of people think these types of customizations would be helpful (or not helpful) for the way they work. (Or also just if my presentation of them isn't clear.) Cheers! |
| 33 comments | |
|
|
Konrad Hinsen
2020-09-15 03:20 #
Since many of you are interested in visual programming, I wonder what your take is on accessibility issues. Motivated by this message found on today's Emacs News (https://lists.gnu.org/archive/html/emacs-devel/2020-09/msg00286.html) which basically says "Emacs is a great application platform for blind users like myself because it has a plain text user interface that can be adapted to voice I/O." |
| 3 comments | |
|
|
Anthony Bramley
2020-09-13 14:06 #
Is this a "general" of sorts? |
| 6 comments | |
|
|
Drewverlee
2020-09-12 18:56 #
What if it's important, for comprehension, that we be able to speak programming languages not just write them. |
| 12 comments | |
|
|
Prathyush
2020-09-12 03:25 #
I tried to write a narrative of how studies in universal algebra and category theory is providing a deep understanding of how programming languages are united/distinct in the way they treat computational structures: https://github.com/prathyvsh/morphisms-of-control-constructs I am pretty new to this field and thought the story of this evolution is less told away from academic circles and started piecing together parts of the story as I read twitter feeds / blogposts / papers on it. If anyone here is knowledgeable in this, can you please provide some feedback on what I have missed or what needs polishing? Pretty sure that there could be some significant details I have missed out. |
| 30 comments | |
|
|
Shalabh
2020-09-11 11:29 #
(My comment below generated a bit of interest in another forum so I want to copy it here as a prompt.) What do folks think about the emphasis on "readability" for programming languages? > Readability in PLs is nice, but ultimately a red herring. It doesn't scale. We may be able to read a small snippet and get it, but once we have more code or more abstractions, we're lost again. The real goal should be to offload all mechanical computation to the machine. IOW, readability gives a very small step. It may be easier to build a "structure in your head" after reading a "more readable" representation (vs a less readable representation of the same thing). However the work really starts after you have this structure, when we begin "playing computer" in our heads. |
| 12 comments | |
|
|
Robin Allison
2020-09-10 23:25 #
Broad question here. Do people here know of any tools that separates the complexity component of a program from the underlying behavior it would eventually produce, and then let you manipulate code so the behavior is fixed? By behavior I mean something like the user-facing behavior of a program, or its effect on some data. Its a flexible concept in my mind. A large portion of programming seems to be rewriting code so it maintains the same behavior, but is then also extensible in some way. Factoring code is an example of this activity, but you could also rewrite code to produce the same behavior which is not a factorization of the original code. To be concrete, you could factor in two different ways, so each factorization would produce the same behavior but neither is a factorization of one another. Moving back to the unfactored code and factoring in the other way is then a means of transforming the code to produce the same behavior that isn't mere factoring. (picture: code<--factoring<--code-->factoring-->code) (this is very reminiscent of factoring in abstract algebra and you could imagine an algebra about manipulating the code in this way, and going down this road you can ask whether two programs will produce the same behavior implies there is a common factorization but this might be another conversation). I'm curious about this question mostly as a proxy for a related question in math: How can you transform one proof into an equivalent proof? This is a slippery concept because nobody knows how to make precise the idea of "equivalence of proofs". If you know about Hilbert and his 23 problems you might find it interesting that he originally had a 24th problem on the equivalence of proofs! Even though the idea is notoriously difficult to pin down, I think it is intuitive enough to take a pragmatic stance and ask how you could go about implementing technology to carry out these transformations. This is important to me because in math we "factor" proofs all the time and often compare proofs to determine the essential and incidental aspects of each. So what I'm really looking for is any techniques or perspectives in the domain of programming that could be taken back into mathematics. I've seen some approaches down at the level of the lambda calculus but I haven't found them useful. I think a pragmatic/experimental approach is better than a theoretical approach at this point. |
| 9 comments | |
|
|
Kartik Agaram
2020-09-09 23:39 #
I'm going to start an opinionated overflow thread for the previous discussion (1599588394.135900.html) Why programmers shouldn't program for themselves (my editorializing) Focusing on "quantity of programming" feels like the wrong frame. My ideal society of people educated in programming may not involve most people actually doing much programming most days. What matters is the potential. Compounding advantages from programming for one day per year. Why programmers don't program for themselves (snapshot summary of the previous thread) (Bullets are not disjoint, just interlocking/overlapping frames I've been finding useful.) |
| 22 comments | |
|
|
Roben Kleene
2020-09-08 11:06 #
Is there any hope for end-user programming when programmers themselves don't use programming to solve their own problems? For a long time, I've been asking myself the question about why more programmers don't use programming to solve their own problems, but it just occurred to me the implications of that to end-user programming. Does end-user programming ever have a chance of succeeding for non-programmers to solve their problems if programmers themselves aren't using programming to solve their problems? When I say programmers don't solve their own problems with programming, what I mean is, there is sort of a ladder of useful techniques to use programming to make programming itself easier. It starts with customizing your shell or your text editor by cut-and-pasting code snippets you find online, and progresses to writing your own customizations from scratch, to writing your own shell/text editor extensions, and finally to writing your own full programs to solve your own problems. I find it so odd that it's so rare for any of the programmers I know personally to progress beyond the first stage (some light shell/text editor customization by cut-and-pasting some code they found online). Since programmers are experts at programming, and they generally choose not to use solve their own problems with programming, what hope is there for end-users to use programming to solve their problems? Or is there something wrong with the lens I'm looking through here? Perhaps programmers are using programming to solve their own problems in a way I'm not seeing? (I.e., that aren't shell and text editor scripting)? |
| 153 comments | |
|
|
nicolas decoster
2020-09-06 10:07 #
I am very interested in programming tools that non-experts can use. I.e. people that didn’t learn to program initially but want or need to sometimes. Last week I have discussed with someone that could be interested in this kind of tool. And during the discussion about her use case, something appeared very clearly. In her journey in using programming, there are good chances that at one point she will need help from more experienced people. My feeling after that discussion is that this will be very common and that it is very important to take this into account early in the vision and the design of such tools or in the building of the community around it. I.e. creating tools that allow non-experts to program, make them feel it is normal to not know everything, making it really easy for them to find some help, and make it easy for a more experienced programmer to give help for the programming task. I guess I had this idea/feeling for some time, but I really feel its importance after that discussion. What do you think of that? Do you have examples of tools/communities where this is taken very seriously? Or any research work on this? Be it for end-user programming or not (in fact even experts need help from “more” experts). |
| 17 comments | |
|
|
Mariano Guerra
2020-09-05 04:42 #
This message was in a conversation but I think the topic (and the resources linked) are good for a thread on its own. What do you think of programming by example and programming by demonstration? what's the best implementation/resource/talk you have seen? |
| 11 comments | |
|
|
Kartik Agaram
2020-09-04 20:30 #
After dreaming about just using BIOS for the last few days (../two-minute-week/1599112907.014300.html), I just noticed this little sentence in a tab I had open all this while: > BIOS only runs in real mode of the x86 CPU. (https://en.wikipedia.org/wiki/BIOS_interrupt_call) Well, hell. I'd be stuck in 16-bit 8086 mode. I see why nobody uses BIOS. It's not just wanting performance. :cry: |
|
|
Andreas S.
2020-09-03 05:09 #
Hello everyone :wave: From time to time I checkout this Youtube Channel: UnjadedJade , as I'm now 40 years its an interesting experience to see someones (much younger ) perspectives on things. So today she released a Video how she would organize her life with notion. https://www.youtube.com/watch?v=67jFfjwUvRQ As we can see she works quite fluently with it. Now do you know by any chance this apple knowledge navigator Video form 1987 : https://www.youtube.com/watch?v=HGYFEI6uLy0 What do you think about her usage of Notion when comparing it to the knowledge navigator? What do you think when comparing your personal knowledge management workflow ( roam, zettelkasten, emacs, vim ...) with hers? What aspects do you like of her example notion usage and what might be missing or completely unthinkable in the notion representation? Thanks for your thoughts! Ah a bonus question: do you have a "peoples database" only for professional contacts or personal too? Both mixed? If not I would be curious how you manage/organize that. Thanks! |
| 8 comments | |
|
|
Charlie Roberts
2020-09-02 11:10 #
Does anyone have tools / processes to recommend for rapidly iterating the design of a language? I’m looking for strategies to produce a document that captures the design, evolution, and potential variations of a language interface separate from implementation concerns. Good examples of this would also be very much appreciated! |
| 13 comments | |
|
|
Eric Gade
2020-09-01 18:00 #
Earlier today I was thinking about Mithen’s “The Singing Neanderthals,” and how deeply embedded in the human brain musical constructs are. Does anyone know of programming systems (particularly end-user programming systems) that use music as the programming interface, or perhaps a significant part of it? |
| 4 comments | |
|
|
Drewverlee
2020-08-31 13:50 #
To what extent do our natural biases leek into the models (data structures, algorithms) we use. E.g is it possible that a tree data structure is more appealing to both users and developers because it mirrors a hierarchy (everything has a parent/cause) vs a graph which has a loop (which came first the chicken or the egg) which is considered less intuitive. It seems a relevant design choice to consider not only the universal truthiness of something but also the cognitive load it takes to use it. |
| 35 comments | |
|
|
hamish todd
2020-08-30 11:07 #
In the thing I am making, you can't have a variable without choosing a specific example value for that variable. This is surely something that's been discussed here before since Bret does it in Inventing On Principle. What do folks think of it? |
| 13 comments | |
| # |
Chris Pearson
2020-08-29 00:01 #
I'd like to know more about how Eve managed reactivity (eg 'commit vs bind' and the idea of tables that contain events). What worked well? Did later iterations/inspired projects tweak this approach? How (if at all) can lazy vs eager reactivity be managed using this approach? http://docs-next.witheve.com/v0.2/handbook/bind/ |
| 15 comments | |
|
|
Cameron Yick
2020-08-28 14:25 #
Pondering: how important is it for a making environment to be made from the same medium you’re making with if your main goal isn’t making interfaces? The Jupyter ecosystem has come quite far despite relatively few people using it to write JS: https://twitter.com/cmastication/status/1299366037402587137?s=21 |
| 11 comments | |
|
|
Harry Brundage
2020-08-27 06:18 #
I was rewatching Are We There Yet the other day (https://www.infoq.com/presentations/Are-We-There-Yet-Rich-Hickey/) which is Rich Hickey (mr Clojure himself)'s treatise on how he sees the world, how objects are lies, and how modelling whole applications as streams of new states produced by pure functions with structural sharing to keep performance good. super interesting to see him talking about this in the Java community in 2009 and see it percolate through to the JS community with immer and redux and whatnot, but i was struck by a certain feeling that i'd love to know if y'all share. The whole OOP/functional debate, this talk, and frankly a lot of my thinking seem to principally be about modelling logic, and striving to get to some place where state is abstracted away. I/we seem to want to get to a world where I/we think mostly about computation and not about state change over time. I had a very strange experience switching from working on a backend team where state is the devil and ruins performance of everything (it'd be so fast if it didn't store anything!) to working in analytics where data is everything and where the code is a tiny little ever-changing bit of glue that manipulates this massive, permanent, far more important artifact. I found it nasty. It's nasty because the data captures every mistake ever made, which pile up and force every user to care about until fixed. It's nasty because it's big and hard to make development responsive. It's nasty because it feels wrong to write "poor" code you run once to fix something then delete, and it is really hard to get a handle on the shape, or quality, or meaning of real big datasets. I think I had (have) data-phobia, and it took getting immersed in a data-heavy product to realize that I think I/we have it backwards, and that the data is more important than the instructions for manipulating it, and deserves to be the focus, not the nagging feeling at the back of your head. What I was struck with in Rich's talk is that the epochal time model and FP writ large seem like they are born of the same phobia, trying to escape the shackles of state management in order to get back to some pure world of computation that doesn't actually exist. A bunch of Bret Victor's work circles around this too, where the instructions to run the code are way less emphasized than the (often visual) data created by what the instructions are actually doing. All the hover-to-see-the-value or watch-this-expression debugging tools are us being forced to go back from pure computation to look at the actual data flowing through once more. Airtable/spreadsheets are counter examples of non-data-phobic tools that seem to be easier to use, maybe because they put the data first. So ... am I off my rocker? Is data-phobia a real thing, a force that has shaped our tools to demote a super important piece of our lives? Is there an antidote? |
| 34 comments | |
|
|
Nick Smith
2020-08-26 20:37 #
I'd like to apologise to those with whom I've had recent conversations about linguistics, logic, and ontologies, for brushing off the relevance of the latter topics to the former. It seems these topics are more deeply intertwined than I had previously realised. • The field of logic emerged as a means of studying how humans reason using natural language. Logic is irrevocably tied to the structure of natural language, and therefore it seems foolish to try to add natural language to a programming system without basing it on logic. • Ontology is the study of categories and relationships. Ontology languages like OWL are actually based on Description Logic (I was surprised!), which could be perceived as a type system based on first-order logic. This gives us a formal way of conceptualising entities and have the computer check that a program is going to respect that conceptualisation. I had been dissuaded from reading into the use of ontologies in information systems because most resources I encountered about it are about the "Semantic Web"; I had equated the two. I'm interested merely in programming systems, and accordingly I have no interest in trying to make or support global standards for the categorisation of information. But the fundamental idea of ontology is sound: it seems like a bridge between natural language, logic, and type systems. I'd be a fool to ignore it given I'm designing a logic programming system. Next up: Several weeks studying the interplay between logic, natural language, ontologies, and type systems! |
| 4 comments | |
|
|
Tyler Adams
2020-08-26 01:57 #
Does anybody have experiences with non-standard keyboard layouts like dvorak? I'm writing a blogpost about keyboard layouts and would love to hear about your experiences |
| 25 comments | |
|
|
Mike Cann
2020-08-25 20:52 #
Anyone played with Motoko yet? https://stackoverflow.blog/2020/08/24/motoko-the-language-th… looks really interesting, kind of reminds me of Unison in some ways |
| 2 comments | |
|
|
Andreas S.
2020-08-24 04:12 #
Hi #thinking-together ! Could someone explain or give links to resources that compare MVVM and the react Approach? How do they compare and relate? |
| 3 comments | |
|
|
Nick Smith
2020-08-23 22:10 #
Why isn't any kind of logic programming considered a model of computation? Why do we talk about Turing Machines and recursive functions as fundamental, but not inference? I can't find any resources discussing this disparity. It's like there are two classes of academics that don't talk to each other. Am I missing something? |
| 12 comments | |
|
|
Ray Imber
2020-08-22 12:42 #
Imperative programming and math pedagogy: TLDR; converting an algorithm or concept from a research paper into imperative code is often seen as tedious, but I think the process helps with learning and clarifying understanding. This is an underrated advantage of imperative code. Thoughts? Do you agree or disagree? How can this idea of "reification" of algorithms be extended to other paradigms? The long version: I am a big fan of Coding Adventures by Sebastian Lague. He just release a new video: https://www.youtube.com/watch?v=DxfEbulyFcY He skims over the details (the videos are more edutainment than true in depth education), but a strategy he seems to follow is to look at the top research papers on a subject, take the key equations, and implement those equations as shaders in Unity with HLSL i.e. a C derivative language. This is a technique I'm very familiar with. I assume many people here are familiar with it as well. It can be tedious work to do this kind of translation, but it's hugely useful. I find that after doing a translation like that, I often have a much stronger understanding of the concept. The way I truly understood integrals and summations was through implementing them as for loops. I didn't understand monads and combinators until I implemented a parser combinator in an imperative language. In PHP no less. I was young and naive :stuck_out_tongue:. Many people in this community are fans of functional programming; there have been quite a few threads about ways to encode algorithms more effectively or "true to their mathematical form:" everything from APL to natural language to category theory. This is a counterpoint against always looking for the "most efficient way" to encode an algorithm. There is something about taking something "functional" and reifying it into a series of imperative steps that helps understanding a concept, at least for my personal learning style. I have very little experience with visual programming, but things like Factorio (mentioned recently), make me think that reification as learning tool can be just as effective in the visual paradigm. How can this idea of "reification" of algorithms be extended to other paradigms, or taken into account more generally? |
| 23 comments | |
|
|
Daniel Garcia
2020-08-21 16:15 #
I know might be heresy but I'm curious why people like the interaction of scrubbing numbers. IMO it's hardly discoverable, it lacks reference values to know how far to drag and feels like poor UX. What others think about it? The first time I saw it was on Bret Victor's learnable programming, also great to know more history about it, and if somebody knows previous uses of it. http://worrydream.com/LearnableProgramming/Movies/Vocab12.mp4 |
| 28 comments | |
|
|
Joe Nash
2020-08-20 05:09 #
So Hacktoberfest is coming up (https://hacktoberfest.digitalocean.com/), which always draws a lot of new contributors, and is a great opportunity to help people get started in open source and discover some new projects. Thinking it’s probably a good opportunity for this community to attract and support new participants interested in these topics, but also maybe in championing eachothers projects and driving some contributions. Does anyone have Hacktoberfest plans already? |
|
|
Nick Smith
2020-08-18 21:28 #
I'm slowly convincing myself that the future of programming includes verbalizability (and thus, natural language). The ubiquity and utility of natural language is well known: almost all of the information we read, write/type, speak and hear every day is communicated via a natural language, not a specially-crafted one. Natural language is our primary means of understanding the world and interacting with other humans, especially in the absence of supplementary tools such as pen-and-paper (e.g. in face-to-face conversation). When was the last time you described a cause-and-effect phenomenon (a story, event, or task instructions) to someone without extensive use of natural language? At best, we use other artifacts (diagrams, formal models) as aids. Despite the ubiquity and utility of natural language, if one person tries to "speak" a Java/C/JS/Rust program to another person, they have to go through an extremely complicated and lossy translation process from code to words. Based on some of my recent design work (not shared yet), I'm beginning to believe we could actually design programming languages whose "source code" consists solely of terse natural language sentences/structures with very specific syntax restrictions (to deny multiple interpretations / ambiguities). The language would not be accompanied by any supplementary symbols (!@#$%^&]/->) with domain-specific meaning, since those would inhibit verbalization. Writing code in this language still requires careful deliberation (to develop the logic), but reading and discussing code with full verbalization becomes trivial: no translation is required at all! Yes, I'm not the first person to think about putting natural language in PLs. Someone might bring up COBOL, HyperTalk, SQL, or similar. I'm not saying verbalizability is "the solution" to programming alone, but along with a well-crafted semantics (information model etc.), it could lead to something extraordinary. If anyone wants to think further about this, Felienne Hermans discusses verbalization/vocalization of PLs as part of a larger talk (video is timestamped to that bit). Quote: "how does code sound?" I searched this Slack's archives, and I was surprised to discover the word "verbalization" has never been used. |
| 25 comments | |
|
|
Nick Smith
2020-08-17 20:51 #
I'm currently searching for the right terms to use for some proposed programming constructs, and "class" is precisely the word I want to use for a specific construct: it makes the most sense, in terms of its non-software meaning. Unfortunately, the term "class" has been absolutely butchered by OOP. Do I dare reappropriate it? I'm not sure I have a good alternative. I need a term that can mean both a label for things (e.g. "X has class Y"), but also the collection/aggregation of things having that label (e.g. "class Y has 7 items"). |
| 26 comments | |
|
|
Orion Reed
2020-08-17 07:40 #
BOOKS! I’m running dangerously low on books and would love some FoC related recommendations. I feel I barely know what’s out there. Edit: am now out of books, please save me. |
| 17 comments | |
|
|
Ope
2020-08-17 06:40 #
What is future of hardware and how will it impact the future of code? What are the most promising approaches to breaking free of Von Neumann bottleneck? <- is this still a thing? I have heard Simon Peyton Jones say a couple of times that they tried to create new architectures for functional languages but they failed. Would these architectures succeed today? Are the constraints(business, technical, community) different enough or will be differ enough in 10 years that they could succeed? |
| 17 comments | |
|
|
Ivan Reese
2020-08-14 23:16 #
Welcome to #thinking-together! This is the new channel for discussions based on our own thoughts and questions about the future of computing. • While you can add reference links to your posts, please take any discussions that center around external links to #linking-together • While you can discuss the future in light of the present, please take any discussions that are mostly about computing (or the world) of today to #present-company • If you'd like to discuss your own work, (A) please do that a lot it's great I love it (B) over in #share-your-work • If you'd like to discuss the future of a particular subject, don't miss our subject-specific channels about the future #of-end-user-programming, #of-graphics, #of-functional-programming, and #of-music. I am working on a new Member's Handbook that will be the canonical home for our cultural norms (how we use Slack messages, the channels, etc) — so stay tuned for that if you aren't quite sure about how to make the most of the new organizational scheme. One final note — I attempted to add everyone in the Slack to #announcements and #present-company, but the Slack UI for this is not great. I know for certain I didn't get everyone, and I can't easily tell who I missed, so if you aren't in those channels then I encourage you to join them. |
| # |
Ivan Reese
2020-08-14 21:57 #
has renamed the channel from "general" to "thinking-together" |
|
|
Ivan Reese
2020-08-14 21:19 #
:loudspeaker: Channel renaming in progress. Here's hoping I get it all done before my toddler wakes up :crossed_fingers: EDIT: Done for the night. More updates to come, likely on Sunday rather than Saturday. Cheers :beers: |
| 12 comments | |
|
|
Mariano Guerra
2020-08-14 02:49 #
"A good science fiction story should be able to predict not the automobile but the traffic jam." ― Frederik Pohl What's the traffic jam of the future of coding? |
| 9 comments | |
|
|
Felix Kohlgrüber
2020-08-14 00:47 #
Next mock: This time it's about resizing and how that breaks layout in state-of-the-art terminals. https://twitter.com/FKohlgrueber/status/1294177496729030656 |
| 1 comments | |
|
|
Felix Kohlgrüber
2020-08-13 04:33 #
Most people here probably use terminals / CLIs quite often and like them for their conceptual simplicity: Send a command -> Receive a response. I'm thinking about improving CLIs while keeping what I like about them. One thing I'd like to improve is interactivity in the output. Different use cases require different levels of detail and currently, there's no way to change the level of detail once the result of a command is printed. For example, a lot of commands include --verbose options that perform the same action, but print additional output. So what if you could interactively decide what information to show in the output? This would allow more flexible / readable output and wouldn't require re-running commands to get additional information. In the tweet below, I mocked a simple example where a stack trace is hidden by default, but can be shown when needed. What do you think of this small idea? https://twitter.com/FKohlgrueber/status/1293865745420615680 |
| 14 comments | |
|
|
Shubhadeep Roychowdhury
2020-08-13 00:51 #
Can we do better than our C compiler? https://briancallahan.net/blog/20200812.html |
|
|
Shubhadeep Roychowdhury
2020-08-12 13:39 #
Rob Pike's 5 Rules of Programming http://users.ece.utexas.edu/~adnan/pike.html |
| 3 comments | |
|
|
Andreas S.
2020-08-12 09:42 #
https://twitter.com/conaw/status/1283434727584620544?s=21 |
| 8 comments | |
|
|
S.M Mukarram Nainar
2020-08-12 07:50 #
https://www.divergent-desktop.org/blog/2020/08/10/principles-overview/ I really liked this post |
| 8 comments | |
|
|
Mariano Guerra
2020-08-11 06:17 #
what's the future of error handling? |
| 22 comments | |
|
|
JP Posma
2020-08-10 22:49 #
I haven’t shown this before, but I figured that it might be interesting to this group. For 2 years I was the tech lead on a robotics visualization tool called Webviz (I’ve moved to a different team now though). Not really looking for feedback since the intended audience is robotics engineers, and the onboarding experience is.. super rough. :sweat_smile: But we can get away with that since it’s incredibly useful; it’s the most used internal tool at our company. Which goes to show how important interactive programming visualizations are — especially in a complex domain like robotics! Anyway, figured some of you might find this interesting. Happy to answer any questions. https://webviz.io/ |
| 1 comments | |
|
|
Garth Goldwater
2020-08-10 20:19 #
https://twitter.com/workingdog_/status/1292940516548640774?s=21 this thread, i think, points to what we lose when our systems and databases aren’t modifiable by everyday users. it’s about the diversity of human experience, and a love of pen and paper, but i think the most important thing to note about the way pen and paper gets talked about here is that the people filling out the forms are free to scratch things out and file reasonable requests and modify things as really existing people and events shake up the ontologies of the processes they are tasked with using |
| 3 comments | |
|
|
Robert Butler
2020-08-10 16:43 #
I just stumbled across this article. It left me feeling like I stumbled onto something very profound. It's not directly related to coding, but this article gets at the very core of what this community is about if we are honest. I know my 16-bit processor, assembly language and ultimately the high level language I'm trying to build are me trying to say something, to be consulted about the future of coding. https://ftrain.com/wwic |
| 7 comments | |
|
|
Roben Kleene
2020-08-10 14:27 #
Interesting Twitter thread proposing game engines are becoming more popular for non-gaming use cases. These were the most interesting examples he gave to me: > The Mandalorian and The Lion King were shot almost exclusively using these tools. > Even Hong Kong International Airport uses a "digital twin" built on Unity to simulate changes in passenger volume He doesn't share many references or links with more details. I'd love to hear from anyone if they have more examples of game engines being used for non-gaming use cases like these. Or any links or other information to share related to this topic. https://twitter.com/aaronzlewis/status/1291889682788253696 |
| 17 comments | |
|
|
Nick Smith
2020-08-10 05:16 #
Has anyone ever come across (or thought about) a tagging system for data where nouns and adjectives play different roles? For example, you might search for a "user", but then refine that search to a "banned user". Note that "banned" and "user" are not necessarily independent tags. Just because someone is a "banned user" and a "father" doesn't mean they're a "banned father" as well. The adjective "banned" could specifically relate to the noun "user". Or a slightly clearer example: someone who is both a "skilled baker" and a "writer" is not necessarily a "skilled writer". I'm now wondering whether an understanding of (basic) linguistics is necessary to develop a good tagging system. After all, our mission is to adapt programming languages to the human mind :thinking_face:. This is part of my search for "an ideal model for information" that readers might remember from a few weeks ago. |
| 54 comments | |
| # |
Brian Hempel
2020-08-10 04:35 #
Hello all! Please consider submitting to LIVE 2020, the Workshop on Live Programming. Traditionally, most submissions to LIVE are demos of novel programming submissions. We hope LIVE can be an opportunity to polish up your work a little and present your progress to the world, by video or PDF or web essay—just be sure to situate the work within the history of programming environments. The submission deadline is Sept 18, and the workshop itself will be online, tentatively Nov 17. The attached Call for Submissions has details, or visit the website: https://liveprog.org/ |
| 2 comments | |
|
|
Ope
2020-08-09 02:52 #
Found the link to this course from the Summer school. Looks interesting so far. In case anyone wanted to take a look - https://people.csail.mit.edu/asolar/SynthesisCourse/Lecture1.htm |
| 12 comments | |
|
|
Mariano Guerra
2020-08-09 01:54 #
https://flume.dev/ |
| 7 comments | |
|
|
Ian Rumac
2020-08-08 10:31 #
Got a question that’s been bugging me. Let’s say you create a new framework/language and accompanying tooling that saves time and money for dozens of developers all over the world. How do you balance openness and monetisation? Do you open source the framework/language but charge for the tools? Do you keep it closed source? Do you do self-hosted/SaaS and community/enterprise split like Gitlab for example? If you open it, how do you earn money to let you work on it full-time? If it isn’t hugely popular immediately, you will have a hard time balancing earning money to live and working on it. But if it’s closed, adoption will probably be low so customers/developers will be wary to use it. |
| 10 comments | |
|
|
Andreas S.
2020-08-08 06:23 #
:bulb: https://www.mondo2000.com/2018/06/18/the-inspiration-for-hypercard/ |
| 1 comments | |
| # |
Chris Knott
2020-08-08 05:53 #
In Le Ton Beau de Marot there's this section about the revelatory nature of errors which I found fascinating. Apparently somebody accidentally said "Rosa only date shranks", instead of "Rosa only dated shrinks". That is, they applied to "make_past_tense()" function to "shrink" instead of "date"! Hofstadter mentions he has collected thousands of examples of errors like these (it's not clear if the "filing cabinet" he talks about is metaphorical or not). I think it might also be useful to collect programming errors in a similar way (maybe put on the wiki eventually). Patterns might start to emerge that are instructive to how people think about coding. These errors are quite precious because they become very rare once you have become fluent in the status quo. Most programming errors are of the type "failed to understand the full consequences of my code" or "failed to consider all possible inputs". These are the types of errors that pros make. I am more interested in the type of errors that beginners make, that might reveal friction between how they might naturally express themselves or understand, and how they are forced to by the language. |
| 7 comments | |
|
|
Shubhadeep Roychowdhury
2020-08-08 02:13 #
Based on my 2019 book, Packt has come up with a new version with some additional topics (and a new co-author). Check it out. It's a massive tome now with 550+ pages full of Python tricks to do data wrangling. https://www.packtpub.com/data/the-data-wrangling-workshop-second-edition |
|
|
Konrad Hinsen
2020-08-06 23:43 #
A story currently much debated in biology: Scientists rename human genes to stop Microsoft Excel from m… The problem of Excel converting some gene names to dates (example: MARCH1) has been discussed for a while already. Biologists had adopted Excel believing it to be a general-purpose computational tool, but then discovered that Microsoft intended it to be a domain-specific tool for business data, without insisting much on that detail in their communication with the public. Several published genome studies already contained mistakes. So... what to do? The feature cannot be turned off, Microsoft didn't really care because biologists are not their main customer base, and re-training biologists around the world to use another tool wasn't doable. So they decided to change the names of the genes! This isn't an easy decision, and it will be costly as well, adding complexity to future bioinformatics software and confusion among biologists. |
| 14 comments | |
|
|
Kartik Agaram
2020-08-06 22:20 #
My personal discipline is to always phrase imperatives as trade-offs: I think speaking in trade-offs is a major level-up in discourse over "why don't we have this yet?" Relevant is the Thiel question: "What important truth do very few people agree with you on?" Most answers turn out to be not very iconoclastic at all, because they aren't phrased as trade-offs. It's great that you want world peace. What do you think is worth giving up for it? So, what important but iconoclastic trade-off do you believe in? :slightly_smiling_face: |
| 12 comments | |
|
|
Will Crichton
2020-08-05 17:06 #
I feel like I’m getting old and crotchety. Every time I go back and watch the canon of FoC videos, I more and more disagree with statements of the form: If only everyone had followed this good old idea, everything would be great by now! Examples: - Alan Kay in “The Computer Revolution Hasn’t Happened Yet” says HTML and browser wars are stupid because we should be shipping the renderer with the file itself. - Bret Victor in “The Future of Programming” says it’s crazy that we’re programming in text files because Smalltalk had a function-centered IDE. But I feel these examples always miss some important context. Social context, technical context, economic context. Shipping a rendering engine with an HTML file would be a technical nightmare. Programming still happens in text files because text files are an incredibly durable, universal format that can be passed around to dozens of auxiliary tools (e.g. code review -- see why everybody hates collaborating on Jupyter). These talks are still obviously insightful, both for reminding us of computing history, and pointing out important issues in the status quo. But I’m always extremely skeptical when they don’t address why programming became the way it is. I have yet to see a talk that grapples with the messy reality of the world, how we have to daily work with huge systems coded by thousands of people who we barely trust. Gone are the days where 10 smart people at PARC can hack together an OS themselves with absolutely no concerns for security, accessibility, backwards-compatibility, … I would love to see more visions for FoC that take these realities into account. |
| 11 comments | |
|
|
Orion Reed
2020-08-05 11:24 #
What are some essential talks about the future of coding? Talks that ask questions like what could the future look like? Why is it important that it’s different? Why should we all care? What is possible? What is so wrong with computing today? Playlists or links to similar conversations are okay here too if you think it fits the criteria. |
| 8 comments | |
|
|
Maeliza
2020-08-05 10:26 #
Hello folks, with @Shubhadeep Roychowdhury we are happy to release the latest version of tree-hugger library : https://github.com/autosoft-dev/tree-hugger :trophy: With a single API call, tree-hugger enables you to mine source code accross 5 languages: • Python, • PHP, • Java, • JavaScript, • C++ :fire: Build your own dataset of code in seconds (e.g. Code Search Net, Py150...) We are looking for feedbacks on it, feel free to shoot any issues |
| 1 comments | |
|
|
Ope
2020-08-05 09:15 #
Another awesome talk at #PLHCISwimmer school. Slides here - defo a lot of FOC here https://docs.google.com/presentation/d/1GmFNZd4pBD973w78I9ms… |
|
|
Marcin Ignac
2020-08-05 05:42 #
I've just encountered this old thread on no-code and open-source in the newsletter and i wonder if anyone has thoughts on monetisation based on content creation similar to how assets and learning materials used in e.g. 3d graphics industry 1591214873.399000.html |
| 5 comments | |
|
|
Pine Wu
2020-08-05 01:01 #
Experimenting with podcast. Would love to learn what you think about it: https://foc-new-podcast-player.netlify.app. Asking since I converted Ep 31 with my tool, and the community survey reveals a high concentration of podcast-transcript readers. Endgoal: to have a text format similar to SRT/WebVTT, but allow HTML content. Have a CLI or website to convert audio + text to this interactive app. Basic features: - Mapping between HTML/audio, vertical-distance/audio-time. - Click audio progress bar to find corresponding HTML - Click HTML to jump to audio position - Click HTML to get a sharable URL-with-hash I edited first few paragraphs to include <a>, but you can put any HTML there, including <img> etc. All HTML can be then linked against audio. Some things I like: - Easily talk about visual things with <img> - Reference without having to explain with <a> - You can read-listen (Cmd+F -> Play) - Each piece of audio dialogue is referenceable I noticed some common shortcomings in podcasts: - can't talk about visual matters - linerality (as you can't easily reference) I think these limitations exclude certain topics and ways-of-talking. I'm making a podcast myself. Being aware of these shortcomings, I first made this tool/presentation before recording my podcast. My questions are: - Would you like to listen to such podcasts? - In what way would you listen to them differently? |
| 14 comments | |
|
|
Steve Peak
2020-08-04 09:50 #
https://www.youtube.com/watch?v=4Ej_3NKA3pk Some nice thoughts in here |
| 8 comments | |
|
|
Mariano Guerra
2020-08-04 04:08 #
How does the future of coding handles missing/mixed data like undefined, null or values that change type over time? |
| 53 comments | |
|
|
Ope
2020-08-03 13:45 #
Slides of the talk from the PL+HCI summer school - https://twitter.com/amyjko/status/1290341602443931649?s=20 |
|
|
Matei Adriel
2020-08-03 05:55 #
Hey guys, question for everyone who's making a desktop visual lang: what do you use for rendering and why? |
| 101 comments | |
|
|
Mariano Guerra
2020-08-03 01:24 #
Now that the newsletter is out announcing it[1] and that it has a fancy url[2] I can say here that FoC has an almost functional full history search :slightly_smiling_face: check it out here and let me know if it breaks: http://history.futureofcoding.org/ [1] You didn't know that FoC has a weekly newsletter? fix that problem here: https://tinyletter.com/marianoguerra/ [2] Thanks to @Ivan Reese |
| 14 comments | |
|
|
ikrima
2020-08-02 13:14 #
curious for those deep in programming languages, what's the general lang design community's take on continuation style passing i.e. • what're the unexpected problems in practice • why are they not commonly used/popular given they seem to keep getting reinvented |
| 20 comments | |
|
|
Kartik Agaram
2020-08-02 08:17 #
Local-first software by our @Peter van Hardenberg now on the HN frontpage: https://www.inkandswitch.com/media/local-first/local-first.pdf |
| 20 comments | |
|
|
Garth Goldwater
2020-08-01 18:22 #
https://arstechnica.com/gadgets/2020/07/ibm-completes-succes… this is huge news for apps that want to be what i’d call “provably non-evil” |
| 1 comments | |
|
|
Tyler Adams
2020-08-01 11:25 #
This week on CodeFaster, I switched from jq tutorials, to sed tutorials. I was hoping my similar title "mastering sed: part 1" would get the same hacker news attention as "mastering jq: part 1", but alas, it didn't even get a single upvote (unlike mastering jq which got 205). It's probably that people are less interested in sed, an old cryptic unix text manipulator vs jq which is a new json, easy to use json manipulator, but I'm still surprised it got none, I expected maybe a few. In any case, I still think sed is important, so I want to keep writing about it. One other thing on my mind is the emotion in my writing. I like to write brief and to the point, no need to fluff up content with empassioned speach or frivilous information, and I appreciate brevity in other writing, but maybe that turns off my target audience? What do you guys think? (This week's post can be found at https://codefaster.substack.com/p/mastering-sed-part-1) |
| 4 comments | |
|
|
Orion Reed
2020-08-01 07:39 #
Has anyone here read The Stack: On Software and Sovereignty? It seems like a treasure trove of good stuff but it’s also a chunky read so I haven’t properly started it yet. It’s interdisciplinary, and seems to be laying out foundations for the kind of work this community is interested in. (Some quotes in thread) |
| 5 comments | |
|
|
Aria Minaei
2020-08-01 01:33 #
On a tangent to the previous thread, I'm concerned that there is a semantic change happening for the phrase "tool for thought." "Tool for thought" and "augmentation of human intelligence" has a rather vase meaning, obviously. Programming environments can be tools for thought, so can design tools, writing tools and more [0]. But I worry that most people who are starting to get introduced to the term, only see a narrow manifestation of it in the form of Personal Knowledge Management systems. This could further obfuscate the wonderful but nebulous "tool for thought" idea, and make it even less accessible than it already is. This feels similar to the semantic change of the term "Object Oriented Programming" that was initially about message passing, but since most people's introduction to it was through C++/Java, it lost its original meaning and became about objects, making the original idea behind OOP even more obscure. |
| 6 comments | |
|
|
Stefan Lesser
2020-07-31 06:57 #
In several threads over the last few weeks I saw references pop up about personal knowledge management tools — you might have heard keywords like Second Brain, Roam(cult), Obsidian, Zettelkasten, Digital Gardens, etc. It's great to see a lot of people familiar with these here and I'm not surprised about that. But in what way do you see a connection to FoC? Tools for thought is practically what I've been working on for a long time now, and as my work shifted from the programming aspects of that more to the general knowledge management aspects, I was under the assumption that this is not the right forum to discuss this (and that's fine — there are other great places to do that). It seems to come up here a lot though, and perhaps that's just my selective perception, so I'm looking forward to hear what people think about this. |
| 11 comments | |
|
|
nicolas decoster
2020-07-31 00:20 #
I guess this contribution deserve a better visibility! It looks nice but I havent played with it yet, and can't tell it is really a productive tool, though. Does anyone know about other programming tools with voice input? |
|
|
Andreas S.
2020-07-30 23:31 #
Whoa another thing from S. Diehl. - I agree with some aspects and disagree strongly with others - https://twitter.com/smdiehl/status/1288822169645002754?s=21 |
| 9 comments | |
|
|
Will Crichton
2020-07-30 09:01 #
Has anyone ever tried coding in VR? Not making a VR app, but writing code within a VR workspace. Even keeping the standard 2D screen metaphor, it seems useful to have infinite screens placeable anywhere in the world. You’re not restricted to physical monitors. |
| 48 comments | |
|
|
nicolas decoster
2020-07-30 01:10 #
Somewhere else in this Slack, @Stefan Lesser wrote: > I love seeing apps experimenting with what touch and mobile can add to traditional workflows instead of just looking at its limitations. > > Every time a new “future” of coding app is presented, and it only works with mouse and keyboard and requires a large screen I’m a little sad of the missed opportunity. Interesting topic, that I'd like to ~bike-shed~ think about together. I fully agree that touch devices and small screen devices are opportunities to imagine new way for programming. But I feel that it is quite hard to address. In particular small screens. Even with text programming, I always feel the need for a big screens. I can't imagine doing this on a phone. And for visual programming, having large screen make it possible to adopt some "map kind" organisation of your programming artifacts, to have nice global view of what your are doing. And something that is challenging, it to design visual representation/manipulation that works well for both large screen/keyboard'n mouse and small screen/touch. What do you think of that? Is there some examples of programming environment that succeeded in this space? |
| 21 comments | |
|
|
Kartik Agaram
2020-07-29 08:03 #
@yoshiki's https://www.notion.so/Dango-b46c07f3dc224f968c768885abe70e70 deserves more eyes than it would get when buried deep in a comment thread. Original context for the curious: https://futureofcoding.slack.com/archives/C0120A3L30R/p15958… (I'd love for more people to hoist great comments by others to the top-level, as a sort of counter-force to always responding within-thread.) |
| 6 comments | |
|
|
Andreas S.
2020-07-29 00:42 #
https://twitter.com/smdiehl/status/1288106450707873794?s=21 |
| 4 comments | |
|
|
Gregg Tavares
2020-07-28 23:53 #
I don't think this is quite the future of coding but ... Kind of like minecraft meets swift playground meets scratch. https://www.viveport.com/cd397ab9-bc81-4607-b963-99ecb4954bfa |
| 2 comments | |
|
|
Srini Kadamati
2020-07-28 13:54 #
I had a lot of fun writing this for work. Google Apps Script is clunky, but it’s pretty nice to be able to query APIs via Google Sheets and prototype stuff! For some this is all they even need: https://preset.io/blog/2020-07-27-live-updating-covid-dashboard/ |
|
|
Ope
2020-07-28 03:11 #
It’s been really nice learning and interacting with all of you. So many interesting perspectives! What are the most influential things that you have read or watched or done and would recommend? |
| 18 comments | |
|
|
Jack
2020-07-28 00:50 #
(shareable tweet https://twitter.com/jdkarmitage/status/1288017378341728258) |
| 1 comments | |
|
|
Jack
2020-07-28 00:50 #
Hope to see some of you there! |
|
|
Jack
2020-07-28 00:49 #
Hybrid Live Coding Interfaces: performance & craft Workshop day 1/2 Live streaming today 4pm UTC on the ICLC YouTube channel: http://youtube.com/watch?v=SFb677O7D6A Full programme: https://hybrid-livecode.pubpub.org/workshop2020 Hybrid Live Coding Interfaces: performance and craft |
| 1 comments | |
|
|
Jack
2020-07-28 00:49 #
Hi all! Live streaming event today... |
|
|
Ricardo Medina
2020-07-27 09:57 #
What are good related podcasts you've listened to? (aside the FoC one, of course) I can recommend Meta Muse. https://twitter.com/MuseAppHQ |
| 4 comments | |
|
|
Lucian Ursu
2020-07-27 07:35 #
is there anyone familiar enough with OpenAI’s GPT-3 to tell me if you can use it in this way: You feed it a text and then ask it questions about the text in the form: • How do I do X? • What are the main concepts present in the text? I’m thinking of something like Progressive Summarization: https://fortelabs.co/blog/progressive-summarization-a-practi… I hope my question makes sense |
| 1 comments | |
|
|
Nick Smith
2020-07-27 00:37 #
Disregarding performance or implementation concerns, is self-describing data the way to go? Is there a conceptually "nice" approach to encoding the meaning of data other than composing it from well-defined attributes? Do schemas have any purpose beyond acting as a "type system" and a data compression technique? Should every piece of data in a programming system be self-describing? We can compress away the redundant descriptions within collections. |
| 14 comments | |
|
|
Scott Anderson
2020-07-26 09:42 #
https://github.com/adam-mcdaniel/oakc |
| 2 comments | |
|
|
S.M Mukarram Nainar
2020-07-26 07:22 #
http://breandan.net/2020/06/30/graph-computation/ Has this been discussed here yet? |
| 2 comments | |
|
|
Duncan Cragg
2020-07-25 09:20 #
Interesting chat over on #administrivia, everyone who wants to pitch in on the channel organisation! ../administrivia/1.595638.html… |
|
|
Christopher Galtenberg
2020-07-25 07:25 #
https://twitter.com/terronk/status/1286774560105193473 |
| 10 comments | |
|
|
Orion Reed
2020-07-25 07:08 #
I’d like to talk a little about capitalism (I know I know please don’t leave!). Not politics, not an “Uh it sucks!” conversation, but a serious discussion that’s highly relevant to the future of coding. This is a hard topic to discuss with the same rigour as computer science or PL design but I think it is one of the most important topics for this community to tackle. To help bring some rigour to this conversation I’d like to bring up some incredibly important academic work which you can check out should you want to. Surveillance Capitalism and Platform Capitalism (these models aren’t in competition) are two of the best and most current models of economics, and could not exist without computing. They are both worthy of your time and have lots of explanatory and predictive power. They also point to a very important point for us: The technical challenge alone will not fix computing, nor will design. It’s not as simple as changing the incentives for companies or decentralising software, and not as straightforward as improving coding by a few orders of magnitude. So, if we as a community want to change coding forever and for good, we must also understand the societal, political and economic context we exist in. I’d love to hear thoughts and discuss this but want to guide this conversation away from some pitfalls and towards productive conversation. Things we don’t need to discuss: • Personal opinions on wether capitalism sucks or not • Opinions on social media or corporate giants and their many problems or evils • The kind of discussions and critiques we have again and again all over social media around capitalism, Web 2.0, platforms, giant tech companies, etcetera. Some things this community could benefit from discussing: • Concrete research and resources to learn more, inform ourselves and each other. • Ways in which we can facilitate true systemic change through our work here. • Questions that we think are worth exploring • Ways for this community to keep growing its understanding of economic context, the complex structures behind them, and improve our collective reasoning and decision making. |
| 66 comments | |
|
|
Ryan King
2020-07-24 14:02 #
I was thinking in an earlier thread how flash animation might be a good introduction to programming, and a lot of you here are working ways to democratise / make programming easier. So perhaps understanding how people learnt to program could offer insights into how to teach people to program and make programming in general less complex. So I'm curious, how did you learn to program? |
| 22 comments | |
|
|
Daniel Garcia
2020-07-24 12:24 #
I think that many companies are standardizing a workflow, that before writing any code you need to write a design document with the options on how to solve a problem and the chosen solution. A lot of times this document has the code changes required by any of the solution options. To me the options that we didn't end up following seem as valuable as the chosen option, and those options should also be captured in code. A really easy way could be in separate branches, but then we loose visibility of them. Is anybody familiar with source control software or with patterns to work with source control that also keeps tracks of options considered but not followed at the end? |
| 11 comments | |
|
|
Ope
2020-07-24 05:39 #
What are the axes on which different programming languages differ? So far, I have evaluation - eager or lazy abstraction mechanisms - classes, modules etc types - static, dynamic, strongly, weakly (I know first 2 and last 2 are different categories:slightly_smiling_face:) syntax primitives What else? |
| 15 comments | |
|
|
Joe Nash
2020-07-24 05:10 #
I just put out the latest Enso devblog: https://medium.com/@enso_org/enso-dev-blog-friday-17th-july-702456f6f94 This one’s got some neat stuff in it, including first look at the standard library (in textual Enso, not yet in visual), and the colour-by-type for ports and edges that may be familiar to users of Luna 1.x. |
| 2 comments | |
|
|
Stefan Lesser
2020-07-24 01:16 #
I think some of you here will enjoy this podcast by Ryan Singer of Basecamp, author of Shape Up: https://synthetic.transistor.fm/ |
| 1 comments | |
|
|
Nick Smith
2020-07-23 23:10 #
I think the above question is better split into two, so here's a separate prompt: What is the difference between an exclusive data bucket and a tag? Is one inferior to the other? How do you tell them apart, behaviourally? (My definition of "bucket" here means simply an exclusive location that a datum is considered to "live" within, whereas a "tag" is not a residence. Example of buckets: the "folders" of a hierarchical file system. Example of tags: the labels placed upon Github issues or the #hashtags of social media posts.) |
| 17 comments | |
|
|
Nick Smith
2020-07-23 19:12 #
Question: Can modularity (drawing sensible "boundaries" between units of code and/or data) be achieved without hierarchy? Discuss. :slightly_smiling_face: |
| 21 comments | |
|
|
Tyler Adams
2020-07-23 11:21 #
This week on code faster, 2 good and one weird. Good #1 pullrequest, a company I occasionally review code for on a part time basis synidcated one of my posts! Good #2, Gradient Ventures (Google's VC arm) retweeted their syndication! Weird: I tried writing a more captivating title, "jq features considered harmful", but it didn't feel right after launch. I tried a few more and eventually felt happy with "Avoid these 6 jq features". Still looking for good resources on how to write a good title if anybody has suggestions |
| 3 comments | |
|
|
Nick Smith
2020-07-23 00:28 #
Has anyone been searching for an "ideal" model for information? By this I mean an abstract model (not a DRAM/disk representation) with a vocabulary that allows a human to read, specify, and understand information with ease. We have existing models like RDF ("Semantic web") and property graphs (e.g. Neo4j), and in programming languages we have object graphs (OO languages), trees (functional languages), and tables (relational DBs). None of these models seem to have arisen as "the one true answer", partially because they are all difficult to reason about when operated on programmatically (or so I claim). I want a model for information that allows us to easily understand both static information structures (snapshots) and programmatically-maintained information structures (an evolving, stateful system). The ideal model for information might define concepts like "pointing" (edges) or "nesting" (groups), and each concept will have a clear meaning. The ideal model will also have a semantics for mutation, e.g. you will know when you define a relationship like A points to B whether B can be deleted or modified in some way, and how this affects the points to connection. The model will also have a notion of stewardship of information, i.e. it should be easy to observe the source of a piece of information, and to know whether it is mutable or just a snapshot. (Yes, I believe the ideal model for information should have a vocabulary to describe distribution and trust). Has anyone here thought hard about this? I've been churning on it for a month or two recently, and for many months over the last few years; I can't proceed with my own PL project until I get fundamentals like this right, since the model that I develop will fundamentally determine what a "program" even is. I think a key reason why discovering "the future of programming" is so hard is that we think too much about code and not enough about information. Code exists purely to transform information, and if you don't make strides on models for information then I don't think you can make strides on programming languages. I have some ideas about a model, but I have no insights from others to validate it against. My conception is a very specific hybrid of mutable graphs and immutable ~trees~ nested sets that distinguishes between descriptions and references, and it seems very amenable to compact 2D representations, unlike most graphs. I won't describe it further just yet, since I don't want to skew anyone's responses. Anyway, I'd love to hear from other people who have been thinking about this kind of stuff. |
| 90 comments | |
|
|
Mariano Guerra
2020-07-22 11:33 #
http://www.flashgamehistory.com/ > “Being a creator of and steward for Flash as a platform was a privilege. I felt that we were building a pencil and it was the community of creators that was responsible for the creation of Flash as a creative form. Our job as stewards was to anticipate needs, listen and make sure it worked. The core idea of having an accessible system for creating interactive media content that works across a range of devices is still a powerful one. Just like pencil and paper is a powerful tool. I hope it will happen again. Many years ago, I had the idea of Flash Forever. How can we treat what is created in Flash as valuable information like a book? Sadly, the need to drive business growth by adding features and capabilities, trumped the need for permanence. It’s great that Flash still lives in the skills and experiences of the community of people who learned and grew with it.” -- Jonathan Gay, Creator of Flash |
| 36 comments | |
|
|
Orion Reed
2020-07-22 10:47 #
Quick question I’d like to ask this community: what are your thoughts on communicating to those outside the FoC community and even outside computing and programming? I.e. family and friends. It’s such a sprawling and deep topic it’s hard to know where to start when trying to get across the excitement, potential, the travesty of the current state of affairs, etcetera. What’s worked? What hasn’t? |
| 2 comments | |
|
|
Ray Imber
2020-07-22 10:14 #
Jonathan Blow has a new talk that seems very relevant to this group. It's titled, "Video Games and the Future of Education", but I think many of the ideas apply to Future of Code as well. https://www.youtube.com/watch?v=qWFScmtiC44 |
| 11 comments | |
|
|
Ivan Reese
2020-07-22 10:05 #
Update on ~Luna~ Enso: https://medium.com/@enso_org/your-enso-questions-answered-3e5fcac23801 I'm going to comment in the thread with some hot takes. |
| 28 comments | |
|
|
hamish todd
2020-07-22 05:06 #
Hey folks, there's something I saw a while ago and I'm looking for. It was: -A recently made hybrid IDE and language -Whose opening webpage had a demo of them making pong. It involved being able to click on the paddle to open a menu -There were quite a lot of wires around but they had put a bunch of thought into its presentation |
| 14 comments | |
|
|
Chris Maughan
2020-07-22 03:07 #
Dreams VR... https://www.twitch.tv/videos/686356245?tt_medium=mobile_web_… |
|
|
Ope
2020-07-22 00:00 #
https://twitter.com/opeispo/status/1285824479923515392?s=20 really really good talk here about what to realistically expect from program synthesis - related to GPT-3, TabNine etc. |
| 1 comments | |
|
|
Ope
2020-07-21 11:23 #
https://blog.repl.it/langjam |
| 28 comments | |
|
|
Aria Minaei
2020-07-21 08:33 #
I just came across this design concept. It's an interesting take on the idea of notes, knowledge management, exploration, and, well, Memex. Especially interesting for me is the fact that it acknowledges the benefits of linear encoding of information in tools like Roam Research, yet rejects it as insufficient as it excludes "other mentalities." Another highlight is that it asks browsers to work within the information blocks, rather than in parallel to them. A nice example of composable tools over integrated apps. |
| 11 comments | |
|
|
Dalton Banks
2020-07-21 06:27 #
Is this excerpt a draft or is it up somewhere? Can’t wait to hear more about what you’re working on! |
| 87 comments | |
|
|
Chris Knott
2020-07-21 01:35 #
I recently finished Exhalation, a collection of short stories by Ted Chiang. This one (The Truth of Fact, The Truth of Feeling), which interleaves a near-future journalist, with a colonial era missionary and tribe, I found very insightful regarding the effects that thinking tools have on thinking - http://web.archive.org/web/20131204053806/http://subterranea… |
| 16 comments | |
|
|
Alex Miller
2020-07-20 08:47 #
https://medium.com/the-long-now-foundation/six-ways-to-think… prompt: how does this frame affect your thoughts about the future of programming? |
| 4 comments | |
|
|
Ricardo Medina
2020-07-19 21:32 #
Probably asked before but, what is your go-to tool for the implementation of a language prototype in terms of parsing, compiling, etc? Language, library, generator...? |
| 12 comments | |
|
|
Xandor Schiefer
2020-07-19 00:40 #
Interesting perspective on GPT-3: https://twitter.com/sh_reya/status/1284545976892403714?s=09 |
| 33 comments | |
|
|
Xandor Schiefer
2020-07-18 23:00 #
https://citrine-lang.org/ seems like this'll lead to an interesting discussion. Not sure about > Citrine does not support comments, forcing authors to write self-documenting code. |
| 2 comments | |
|
|
Scott Anderson
2020-07-18 09:44 #
https://twitter.com/sharifshameem/status/1284421499915403264?s=19 |
| 6 comments | |
|
|
Ope
2020-07-18 08:00 #
Thinking about it now, won’t configuring Kubernetes be a good fit for Visual Programming? Definitely sounds better in my head that yaml. Does this already exist? Is there a complication I’m missing? |
| 10 comments | |
|
|
Christopher Galtenberg
2020-07-18 07:57 #
By @Pete Vilter https://twitter.com/vilterp/status/1284003539883352064 |
| 13 comments | |
|
|
Jack Rusher
2020-07-18 04:18 #
The sources for Interlisp-D, along with an emulator, are finally becoming available under an open license: https://docs.google.com/document/u/0/d/17LkdOmdRtuZmvxS4flAf… This is of interest because the people who worked on this system were very, very bright and early to many of the things we're still talking about (for example, this is the context in which UNDO/REDO, DWIM, and structural editing were invented). A large portion of the work that went into Interlisp was done at Xerox PARC, and there was a great deal of cultural and intellectual interchange with the team responsible for Smalltalk, &c. |
|
|
Robert Butler
2020-07-17 13:30 #
@Kartik Agaram I was reading through the civilization article you posted. And this stuck out to me: "The longer social technologies exist, the more varied the understanding of them becomes. The original contexts for their existence can change, or translation errors can occur in their reproduction." Viewing coding as an essentially a social technology (what is code used for other than to try to influence social processes) might be a way to look back and look at the fundamentals of what makes a civilization work. Indeed, there is a possibility that any group of people contemplating the future of code might do very well to spend as much time looking backward and attempting to understand as looking forward and seeing what might be. |
| 31 comments | |
|
|
Stefan Lesser
2020-07-17 09:20 #
I was contemplating if this is something for #thinking-together or if it should go into #administrivia, but the more I think about it, the more I believe this is as much about the future of coding as it gets; at least about the future of coding that I want to see. Here's the always well-read and deeply investigative Dan Luu about discrimination in tech: https://danluu.com/tech-discrimination/ |
| 2 comments | |
|
|
Ricardo Medina
2020-07-16 20:08 #
Can I download future of Coding podcasts for offline listening? I used to do it but can't remember how. |
| 4 comments | |
|
|
Doug Moen
2020-07-16 18:40 #
I want to make a list of open source programming languages with a projectional editor, that supports mixed text and graphical notation. Not node and wire syntax like Pure Data. Instead, code is organized in a syntax tree where tree nodes can either have a conventional text syntax, or use graphical notation. Please reply if you know a project like this, and post a link. |
| 13 comments | |
| # |
yoshiki
2020-07-15 18:12 #
A great overview by Amy J. Ko of the deep problems with CS education right now, highlighting in particular racism, sexism, ableism, and elitism, which are amplified by a lack of pedagogical awareness.(context apparently is in response to the pandemic): https://docs.google.com/presentation/d/15UxfJnjI8P0N33xGlTqY… |
| 7 comments | |
| # |
Mariano Guerra
2020-07-15 12:29 #
:rocket: all history is now searchable/exportable: https://marianoguerra.github.io/future-of-coding-weekly/hist… |
|
|
Christopher Galtenberg
2020-07-15 11:24 #
More PastOfCoding, but never know when retro is prologue — Vipercard is a typescript rewrite of HyperCard https://www.vipercard.net/ Code: https://github.com/moltenform/vipercard |
| 2 comments | |
|
|
Harry Brundage
2020-07-15 09:59 #
https://link.springer.com/article/10.1007%2Fs10270-019-00768-3 super interesting deep dive on creating a programming environment for laypeople to control their environments > Consider a girl, Ellen, who plans a long hike for the morrow. She wants to start early. She wants the alarm to wake her at 06:00 but only but if the meteorologists forecast dry day. Ellen selects three objects: A bedside alarm, a weather forecast, and a timer. She calls them WAKERUPPER, FORECASTER, and TIMER, and links them together to form a system of collaborating objects. http://heim.ifi.uio.no/~trygver/themes/Personal/ezgif.com-optimize%20(3).gif |
| 2 comments | |
|
|
Kartik Agaram
2020-07-15 09:37 #
Spinning up a new thread for https://palladiummag.com/2020/07/10/how-late-zhou-china-reve… since the previous one got side-tracked. It's really great! |
| 4 comments | |
|
|
Kartik Agaram
2020-07-14 17:24 #
If I could pin one thread from the history of this Slack, it would be the one where we discussed Jonathan Blow's https://www.youtube.com/watch?v=pW-SOdj4Kkk Today I ran into an amazing article that adds nuance, historical context (literature surveys) and concrete analysis to the problem. https://palladiummag.com/2020/07/10/how-late-zhou-china-reve… |
| 27 comments | |
|
|
Aria Minaei
2020-07-14 08:25 #
This was an interesting presentation from 2009 on end-user programming, remix, and other topics: https://www.youtube.com/watch?v=7_rTUEnCwUM It has a nice demonstration at 5:40 of scraping live data from a web page without an API and mapping it onto a more useful interface. |
| 1 comments | |
|
|
Mariano Guerra
2020-07-13 11:59 #
:wave::skin-tone-4: I'm improving this slack's history format and now I'm replacing user mentions with a link of your choice (to your twitter, github, linkedin, home page, blog or whatever you like), I'm doing that with the user's I already have (which I have because I ask when I need to mention them on the newsletter), if you want to "opt-in" to having your name linking to a page of your choice in the newsletter and the archive send your preferred link via a DM to me or put it in your profile, which I will check when doing the newsletter. you can see the results here: https://github.com/marianoguerra/future-of-coding-weekly/blo… (I dumped this week's general to markdown) and here: https://marianoguerra.github.io/future-of-coding-weekly/hist… (same result on the search tool) |
| 2 comments | |
|
|
Ryan King
2020-07-13 08:03 #
Interesting tweet from @Marcin Ignac on trying to organise and navigate the hairball graphs that can emerge from note-taking apps. https://twitter.com/marcinignac/status/1282625655725858817 |
| 7 comments | |
|
|
Emmanuel Oga
2020-07-12 21:04 #
Is anybody using RDF and/or SPARQL on your FoC projects? |
| 27 comments | |
|
|
S.M Mukarram Nainar
2020-07-12 12:10 #
Some pretty interesting speculative design here: https://gavinhoward.com/2020/02/computing-is-broken-and-how-to-fix-it/ |
| 14 comments | |
|
|
Stefan Lesser
2020-07-12 03:05 #
Finding powerful new primitives of thought: https://twitter.com/michael_nielsen/status/1282142109680590848?s=20 Refers to https://distill.pub/2017/aia/ |
| 1 comments | |
| # |
Garth Goldwater
2020-07-11 15:05 #
finally found a blog post about rebol/red that communicates some of what I suspected was interesting about it: http://www.codeconscious.com/rebol/articles/rebol-concepts.html . in particular, in the screencap: the body of a function and its argument list are just data structures. so you can use them as first-class citzens as you like. please let me know if any of you know of any other languages with this level of flexibility! |
| 37 comments | |
|
|
Tor
2020-07-11 02:00 #
What are some good resources around the power imbalance in the interaction of software and users? For example, the disregard for consent in a dialog box where the option “No” is replaced with “Not now”. |
| 27 comments | |
|
|
Ope
2020-07-10 14:37 #
I think this is quite interesting - https://twitter.com/ProvablyFlarnie/status/1281696078811676672?s=20 speaks to how we see code differently. Do you see code? Do you see a flowchart or see nothing? |
| 13 comments | |
|
|
Garth Goldwater
2020-07-10 12:23 #
https://youtu.be/A_fe2c6IUUo i know ink & switch gets a lot of play here. this video has it all: a really cool app, a discussion of interface philosophy and decisions, and engineering roadblocks at the edge of performance (plus a Q&A i haven’t finished) |
| 11 comments | |
|
|
Xandor Schiefer
2020-07-10 05:32 #
Related (happened to be watching this today): https://www.youtube.com/watch?v=uEFrE6cgVNY |
| 2 comments | |
|
|
Jacob Chapman
2020-07-10 04:05 #
this is an interesting comparison of syntax across many languages http://rigaux.org/language-study/syntax-across-languages.html I'm trying to find a website that is similar and shows how to implement specific algorithms in each language grouped by algorithm. does anyone know the name of that website? |
| 5 comments | |
|
|
Ope
2020-07-09 18:19 #
Looks relevant to this group - http://shape-of-code.coding-guidelines.com/2020/06/30/beta-e… |
| 3 comments | |
|
|
Garth Goldwater
2020-07-09 07:35 #
one thing i’d like to see in visual programming paradigms is using an object-oriented heuristic: if you have a bunch of identifiers that start or end with the same word (eg xReducer, yReducer or ICommand, IUser), in OOP it should probably be a type. in visual programming it should probably be an affordance, like a color, shape, symbol, or some combination |
| 15 comments | |
|
|
Tyler Adams
2020-07-09 07:30 #
This week in code faster. Unlike last week, my post did not go viral. What a difference! Not viral means ~500 views, viral means 18k (36x!). Beginner tutorials have much better virality because of their wider appeal, and there's some luck involved. However, there are some ideas about jq I want to write about to finish up my "mastering jq" series. After this, I'll try writing some basic tutorials to various unix commands (sed, xargs, grep, etc.) and see if other people find them more valuable. It's a lot more fun to write about advanced techniques, but as JZ said, "If skills sold, truth be told, I'd probably be lyrically Talib Kweli. Truthfully I want to rhyme like Common Sense (but I did 5 mil). I ain't been rhyming like Common since" |
|
|
Shubhadeep Roychowdhury
2020-07-09 01:37 #
Did you guys know about this one - https://brython.info/index.html |
| 2 comments | |
|
|
Ivan Reese
2020-07-08 23:43 #
One way to categorize FoC projects is to consider the following spectrum. (Go with me here — resist the urge to treat this as a multidimensional space.) In the center, we have projects that resemble typical programming languages. These tools are designed with particular semantics that the programmer will employ to structure their problem solving. They are general purpose. They don't have much regard for the particular kinds of problems being solved. This is your Java, Clojure, Vulkan, brainfuck, etc. Off to one side, you have programming tools that have both tightly defined semantics and a focus on solving particular kinds of problems. These are specialized. This is Excel, Notion, Max/MSP, OpenGL, bash, etc. Off to the other side, we have programming tools that, while they still have semantics, don't expect you to work entirely within those semantics. They have even less regard for the problem domain. These are tools that expect you to first build some new tools from or within them, then solve your problem with those tools. This is Racket, and arguably REST, RDF, stored procedures in a DB, and other things. Now my question: are you building an FoC project that falls into the latter category? If so, talk about that a bit. What's the rationale? |
| 32 comments | |
|
|
Ryan King
2020-07-08 17:40 #
Does anyone have database recommendations for user generated data structures? I'm currently using postgres and it's feeling a little inadequate. For example, a user might have simple formula like 10 + 5 which I store as a string, and I have a numberCache column storing 15 for querying. But a formula can also be a string, or a date, so now I need a stringCache column and a boolCache column. And then there's user input if statements which I haven't thought about yet and may need to calculate on the fly. I have dynamic types, and dynamic relationships, and I'm wrangling postgres into shape, but I can't help but feel there must be something better suited? I was thinking of playing with something more schema-less like mongoDB. Any advice would be appreciated! |
| 19 comments | |
|
|
Stefan Lesser
2020-07-08 13:43 #
> What if, instead of lowering source code down for the purpose of execution, we raised source code for the purpose of understanding? > > What if we took the lessons of the semantic web and applied them to source code? > > https://nshipster.com/as-we-may-code/ |
| 7 comments | |
| # |
Andreas S.
2020-07-08 06:20 #
So when people on social media notice how social media fails, even in not too advanced ways, is it our fault as programmers? Designers? Who designs Cultural myths like Apps and social media designs like “feeds” and threads ? |
| 5 comments | |
|
|
Andreas S.
2020-07-07 07:14 #
https://twitter.com/jasonyuandesign/status/1133429180362821632?s=20 |
| 15 comments | |
|
|
Andreas S.
2020-07-07 07:14 #
I was wondering was this discussed here before? ( I couldn't find it via search?) |
|
|
Stefan Lesser
2020-07-07 06:46 #
When you are beyond the prototyping stage and start to put together an early version of something you intend to use yourself extensively and probably also give to a small number of people to try out, what are the measures you take and practices you follow to make that a great experience? For instance, what do you do to make sure data isn‘t reset or lost between updates or can be migrated easily? |
| 24 comments | |
|
|
Mariano Guerra
2020-07-07 05:45 #
Interface matters to me more than anything else, and it always has. I just never realized that. I've spent a lot of time over the years desperately trying to think of a "thing" to change the world. I now know why the search was fruitless -- things don't change the world. People change the world by using things. The focus must be on the "using", not the "thing". Now that I'm looking through the right end of the binoculars, I can see a lot more clearly, and there are projects and possibilities that genuinely interest me deeply. -- worrydream.com/quotes/#bret-victor-email |
| 3 comments | |
|
|
Harry Brundage
2020-07-06 11:36 #
Is anyone aware of a good meta-analysis on why node and link based programming has only found limited success? lookin' to learn more |
| 58 comments | |
|
|
S.M Mukarram Nainar
2020-07-06 02:07 #
@Kartik Agaram This reminds me of your code organization scheme, with the feature splicing and stuff: https://github.com/kiselgra/cm-fop , though their focus is more on outputs than inputs—they ended up with this by optimizing for exploratory programming with heterogenous outputs, not readability/understandablity. I think it goes to show how much overlap there is between those goals—maintaining understanding of a codebase is a key part of enabling exploration. I'd never heard of feature-oriented programming before, but it's neat |
| 1 comments | |
|
|
yoshiki
2020-07-05 21:41 #
Recently discovered this prototype of micro-versioning: > Experimentation plays an essential role in exploratory programming, and programmers apply version control operations when switching the part of the source code back to the past state during experimentation. However, these operations, which we refer to as micro-versioning, are not well supported in current programming environments. We first examined previous studies to clarify the requirements for a micro-versioning tool. We then developed a micro-versioning tool that displays visual cues representing possible micro-versioning operations in a textual code editor. Our tool includes a history model that generates meaningful candidates by combining a regional undo model and tree-structured undo model. The history model uses code executions as a delimiter to segment text edit operations into meaning groups. https://hiroakimikami.github.io/micro-versioning-tool/index.html |
| 4 comments | |
|
|
Sverrir Thorgeirsson
2020-07-05 05:20 #
Lately I've been thinking about syntax highlighting and how helpful it is for developers. Recent research on this seems to be mostly focused on students and beginners, but the consensus (if there is any) seems to be that SH has negligible effects on source code comprehension (some examples: 1, 2, 3). A 2015 paper found an positive benefit, but the study had a small sample size and found that the effect is strongest for beginners. The authors of the 2018 paper (linked above) made the following claim: > Our findings indicate that current IDEs possibly waste a feedback channel to the developer with an ineffective code highlighting scheme. This feedback channel could convey more meaningful information, for example the font colour could encode the type of function in terms of its namespace. In other words, "semantic highlighting" could be more beneficial for programmer productivity, a paradigm that "attempts to reveal the meaning of the code" instead of just "identifying syntactic elements" [source]. This can mean something simple like giving each variable its own colour, but I think it can also incorporate more creative ideas. I found two IDE packages for semantic highlighting: SemanticColorizer for Visual Studio and semanticolor for Atom. Has anyone here has used those packages (or something similar) and found them useful? I'm also interested what opinions you have about syntax highlighting in general (I've already read Rob Pike's opinion). :slightly_smiling_face: |
| 20 comments | |
|
|
Garth Goldwater
2020-07-04 10:51 #
can someone explain to me what pragmas are in smalltalk in very concrete terms? I’m trying out gtoolkit |
| 16 comments | |
|
|
Kartik Agaram
2020-07-03 17:14 #
@nicolas decoster's demo today[1] and Avi Bryant's demo a couple of weeks ago[2] has me thinking of this post @Mariano Guerra shared a couple of months ago[3]: https://billwadge.wordpress.com/2020/04/20/the-intensional-spreadsheet [1] ../two-minute-week/1593813312.058700.html [2] 1592347969.348200.html [3] 1587457167.095700.html |
| 7 comments | |
|
|
Xandor Schiefer
2020-07-03 09:43 #
I don't necessarily agree with all the claims, but that's a cool demo: https://twitter.com/Altimor/status/1278736953836400640?s=19 |
| 25 comments | |
|
|
Mariano Guerra
2020-07-03 09:22 #
https://cloud.google.com/blog/products/g-suite/connected-she… |
|
|
Ope
2020-07-02 14:53 #
As part of the future of coding, one of the things we should think about is making learning how to code easier and more effective. Anyone have thoughts on how this could be like in the future? I have been doing the executeprogram.com and I find it pretty effective, definitely more effective than books (books are my primary way to learn, find it hard to concentrate with online lectures). It’s great because the lessons are bite sized, spaced repeated so I’m not stressed about remembering, requires you to write code and be active etc. Any one tried other approaches that worked really well? How would this be different in 10 years? Or what would a vision of the future look like? |
| 34 comments | |
|
|
Ryan King
2020-07-02 13:59 #
Hey gang, I've been super interested in roam research and #zettelkasten -like apps recently and I've been wondering if it could be used to help organise the infinite temporal feed that is Slack. Perhaps hashtags can help? Apparently if I tag #share-your-work it will associate that post with the hashtag channel or make it searchable if it doesn't exist. What do you think? Should we start using hashtags to categorise and make past threads more discoverable? |
| 38 comments | |
|
|
Kartik Agaram
2020-07-02 13:33 #
I just came up with a list of things all programmers can agree are important, that non-programmers or newbie programmers tend not to focus on: I'm curious to see other people's lists, and whether anyone disagrees with one of my bullets. (Inspired by one part of https://www.capitalone.com/tech/software-engineering/go-is-boring) |
| 25 comments | |
|
|
Shubhadeep Roychowdhury
2020-07-02 09:55 #
Interesting read -> https://snarky.ca/what-is-the-core-of-the-python-programming-language/ |
| 1 comments | |
|
|
Michael Coblenz
2020-07-02 05:59 #
Another opportunity: I’m co-organizing HATRA, which is a new workshop this year at SPLASH. https://2020.splashcon.org/home/hatra-2020 |
|
|
Ope
2020-07-02 05:31 #
Seems very relevant to the group - https://shriram.github.io/pl-hci-school-2020/ |
| 2 comments | |
|
|
Stefan Lesser
2020-07-02 05:13 #
I’d like to break this out from a thread above and talk about remixing, business models, and open standards: 1.593684.html… In today’s business-driven technology environment it seems success is tied to ownership of a platform or “walled garden”. The idea of sharing and making things work with each other is severely limited. It hasn’t always been that way. All these walled gardens run on core technologies that are open standards (Internet protocols, web standards, etc.) and wouldn’t exist without them. How did we end up here? And more importantly, how can we swing back to a more remix-friendly environment? What creates incentives for that? |
| 31 comments | |
|
|
Andreas S.
2020-07-02 01:13 #
So I want to finish of my long train of thoughts here with the great video from the gtoolkit maker - moldable developement . I like many perspectives he is offering but especially how he approaches user sovereignty. I think its absolutely necessary to broaden up the horizon of what a "programmer" or a "user" is. I think we need a much better more inclusive culture in regard to that: https://www.youtube.com/watch?v=Pot9GnHFOVU&feature=youtu.be |
| 8 comments | |
|
|
Andreas S.
2020-07-02 01:05 #
Its so interesting how there is a culture in which the users are largely left out of the contributing to software experience ( why are the authors of open source projects always drowning in issues and feature requests?). In part I would also blame this on inflexible and monopoly tools/platforms like Github. This leads to responses from the zettlr author like this: https://twitter.com/sahiralsaid/status/1277605825989705734 |
|
|
Andreas S.
2020-07-02 01:03 #
Now this is interesting because as I started to use software like zettlr. I soon found small issues one after another but that ultimately added so much up that I decided not to use it. And now Gtoolkit seems to bring in the smalltalk approach which gives me as a User ( smalltalk able programmer) the ability to mold the tool in ways which I need. Runar from unison was also in the loop. I would love to have a more functional language like scala , unison or clojure (see early efforts cloxp) available in such an environment. |
|
|
Andreas S.
2020-07-02 01:00 #
I think we had the "zettelkasten" Topic now a couple of times. It seems to be quite popular also on hackernews. I think the most popular tools include zettlr.com (open source), https://obsidian.md/ and https://roamresearch.com/ . But how is this interesting to us? So I talked with some people about this on twitter and then roam research replied with the following https://twitter.com/RoamResearch/status/1276049217434161152 |
|
|
yoshiki
2020-07-01 20:17 #
I've been prototyping a tool for frontend/end-user programming in React, and found myself in need of access to its internals to build the UI I wanted, but found the API for that convoluted. But I recently learned of this little library called hyperapp. Its source code is only a couple hundred lines long and is very straightforward compared to React, and in my case patching in the reflection capabilities I needed was simple(just one line of code). If you're interested in prototyping new ways to build interfaces that rely on the React model it seems like a good starting point: https://hyperapp.dev/ |
| 22 comments | |
|
|
S.M Mukarram Nainar
2020-07-01 19:03 #
Is lambda-the-ultimate.org down for everyone else? It appears to be serving nothing, and using an invalid tls cert |
| 5 comments | |
|
|
Tyler Adams
2020-07-01 14:16 #
This week in codefaster was weird. I wanted to write about some very powerful techniques with jq that let you use it on any data format (xml, csv, yaml, etc) and even any data source (dbs, embedded systems, machine config). But it was really hard getting the wording right, and I couldnt make my deadline. So I just submitted the first part which were the basics of jq. Nothing exotic or original. Substack then messed up and delayed my newsletter by 90 minutes. Terrible post right? Well, it made the front page of hacker news, racked up 13k views (I usually get a few hundred), and almost tripled my subscribers. So, I'll try writing more tool tutorials, maybe people really find value there. |
| 13 comments | |
|
|
Ivan Reese
2020-06-30 19:17 #
> • While viewing a saved trace, you can adjust parameters and it’ll overlay a counterfactual graph of what the code would have done with the new parameters. > • The Yoga language is fully differentiable WRT its parameters so you can click on an output variable (like motor speed) and it’ll tell you what parameters you should change in which direction to affect it. This seems cool. https://yoga.dev/timeshared-robots/ |
| 3 comments | |
|
|
Steve Peak
2020-06-30 10:00 #
https://www.streamlit.io/ announced a $21M Series A to deliver an amazing experience around democratizing data apps. They are hyper-focused on Python and really crushing it! |
| 10 comments | |
|
|
Shubhadeep Roychowdhury
2020-06-30 05:51 #
Also, this came up today in a Youtube video - https://www.jetbrains.com/mps/ |
| 5 comments | |
|
|
Ope
2020-06-30 03:34 #
Anyone using this? https://docs.codestream.com/userguide/ thoughts so far? |
| 6 comments | |
|
|
Shubhadeep Roychowdhury
2020-06-30 01:52 #
Amazon released CodeGuru - https://aws.amazon.com/blogs/aws/find-your-most-expensive-li… |
|
|
Andreas S.
2020-06-30 01:02 #
ok your right @Mariano Guerra I will go in the thread |
| 4 comments | |
|
|
Andreas S.
2020-06-30 01:01 #
http://viznut.fi/texts-en/permacomputing.html |
| 16 comments | |
|
|
Andreas S.
2020-06-30 01:01 #
The other day I found this on hackernews and I hope that this is an essential part of this group: |
|
|
Mariano Guerra
2020-06-30 01:01 #
please continue in the thread :slightly_smiling_face: |
|
|
Andreas S.
2020-06-30 01:00 #
My intuition always keeps reminding me of the first Chapter of Seymour Paperts - Mindstorms: Computers and Computer Cultures |
|
|
Andreas S.
2020-06-30 00:58 #
I don't have a problem with jobs statement that there is a difference between an idea and the tangible implementation of an idea. But if you look at the conception of "personal computing" from J. C. R. Licklider's idea of a Dream machine to Xerox Parc to Apple and Microsoft. There are a couple of things that went "wrong". Is a company "body" like apple the best way in which people can communicate the gift of computation to other people (https://blog.anylist.com/2020/06/sign-in-with-apple/ ) ? |
|
|
Andreas S.
2020-06-30 00:51 #
somehow I disagree or at least want to emphasize a different perspective |
|
|
Edward de Jong
2020-06-29 18:04 #
quite relevant to invention in general, which is the main thrust of this group, inventing the future. |
| # |
magicmouse94937
2020-06-29 18:03 #
just came across this old quote from Steve Jobs |
| 23 comments | |
|
|
korede
2020-06-29 14:52 #
can we somehow fund work on “web extension frameworks” for popular apps? i feel like there was a good community of these like the pocket extension for twitter (i’m guessing before source code ambiguation became more of a thing). but there’s probably still paths to that if you put some steam behind it. |
| 2 comments | |
|
|
smt
2020-06-29 14:43 #
do any of you stream on twitch? or know of any foc-related twitch streamers |
| 7 comments | |
|
|
Shubhadeep Roychowdhury
2020-06-29 01:49 #
Computational Category Theory (By Rydeheard and Burstall) http://www.cs.man.ac.uk/~david/categories/book/book.pdf |
| 5 comments | |
|
|
Mariano Guerra
2020-06-29 01:46 #
For the new ones, there's a FoC Weekly Newsletter, for the old ones, the archive has a better style (thanks to @Ivan Reese) and now it embeds tweets https://twitter.com/warianoguerra/status/1277521946293547008 |
|
|
Spencer Baugh
2020-06-26 19:44 #
any suggestions on a good front-end library/framework for making drag and drop interactive OOP UIs? for example, a workspace of objects, and clicking a method inside an object then clicking on other objects to pass them as arguments. lots of these exist for specific languages, I'm sure, but if I wanted to make one for my own language, what would I use? |
| 20 comments | |
|
|
Mariano Guerra
2020-06-26 06:08 #
Luna is now called Enso and they are starting from scratch: https://medium.com/@enso_org/enso-dev-blog-19th-june-2020-335e528d50b |
| 8 comments | |
|
|
korede
2020-06-25 14:15 #
python’s adding structural pattern matching https://www.python.org/dev/peps/pep-0622/ |
| 24 comments | |
|
|
Aleks Litynski
2020-06-25 10:20 #
I'm trying to write a block based editor (in the style of unreal blueprints and its ilk), but I don't want to let users move nodes freely. I have an algorithm I'm fairly happy with to position the nodes, and now I need to draw edges between them. I'm fairly certain this is NP hard, but that circuit board designers deal with this a lot and have some pretty solid algorithms to do it - https://en.wikipedia.org/wiki/Routing_(electronic_design_automation). Is anyone aware of general purpose libraries that are able to do this? |
| 15 comments | |
|
|
Stefan Lesser
2020-06-25 01:28 #
Anybody else here following Apple’s WWDC and having FoC-related thoughts about it? |
| 21 comments | |
|
|
Mariano Guerra
2020-06-24 13:36 #
amazon's no code product just launched: https://www.honeycode.aws/ (HN Discussion) |
| 6 comments | |
| # |
Maeliza
2020-06-23 17:39 #
Future of coding should also means more equity. I came accross a paper earlier mentionning that latest NLP algo intensify gender bias in Information Retrival system (source: https://arxiv.org/pdf/2005.00372.pdf). Basically, the more performant is the algo the more it is able to infuse the bias of the training dataset. When it comes to NLP to fight gender bias, there are some technics like gender swapping,biais fine tuning or learning gender-neutral embedding exist to mitigate the bias (futher reading - https://arxiv.org/pdf/1906.08976) :arrow_down: I attached a screen shot of my browser (Ecosia) when looking for 'doctor' in images |
| 6 comments | |
|
|
Jared Windover
2020-06-23 08:21 #
Scott Kim’s Viewpoint Demo: https://youtu.be/9G0r7jL3xl8?t=764 At this section, he’s able to do some modification of the ui of a drawing tool using that tool. Most of the video seemed pretty meh to me (oh a pixel-based drawing tool), but I found this particular segment extremely compelling. |
| 3 comments | |
|
|
S.M Mukarram Nainar
2020-06-23 08:05 #
> “On the surface, the fundamental idea of a direct manipulation interface to a task flies in the face of two thousand years of development of abstract formalisms as a means of understanding and controlling the world. Until very recently, the use of computers has been an activity squarely > > in that tradition. So the exterior of direct manipulation, providing as it does for the direct control of a specific task world, seems somehow atavistic, a return to concrete thinking.”66 > https://interfacecritique.net/journal/volume-1/scherffig-there-is-no-interface/ Some interesting stuff here, though I'm not sure I buy into the gestalt psychology stuff. This journal seems to have other neat stuff (that I haven't read) too. I saw something on xanadu in the table of contents. |
| 1 comments | |
|
|
Srini Kadamati
2020-06-23 07:25 #
Bummer https://medium.com/darklang/dark-and-the-long-term-2c65ff0baf5e |
| 4 comments | |
|
|
Garth Goldwater
2020-06-22 09:45 #
CANNOT believe I hadn’t heard of Xiki. hard to describe. kind of like a text-base glamorous toolkit or REBL. kind of like a structural interface over the command line. tons of ideas (more info in thread)—https://youtu.be/QqOrQN0bxNE |
| 10 comments | |
|
|
Andrew Reece
2020-06-22 02:35 #
WhiteBox (real-time C function debugger) development going live in 9hrs Time: https://handmade.network/whenisit?t=1592850600&n=Andrew%… Watch: https://twitch.tv/azmreece Join voice chat: https://discord.gg/xHgepxM |
|
|
Tyler Adams
2020-06-19 09:42 #
This week in code faster, I wrote about a fairly simple technique, including ticket links in TODO comments (the same applies for bug workaround comments). What was weird is I wrote it in my head 5 times, then put it on paper, and realized half of it was a bunch of bikeshedding. Even something so simple is easy to get wrong. Writing is still a really slow process :/ |
| 4 comments | |
|
|
Aleks Litynski
2020-06-19 09:27 #
Does anyone know if there are audio-only programming environments? Ostensibly, I'm interested in tools that facilitate blind programmers, but I'm curious about more esoteric things as well. It would be ...interesting... if an editor played more ominous music as your cyclomatic complexity increased. Or, assigned a different motif to each class so you could tell where you were in the code by listening. |
| 8 comments | |
|
|
Duncan Cragg
2020-06-19 00:49 #
Stuff going on in the kitchen at this party, once again.. :face_with_rolling_eyes: |
| 4 comments | |
|
|
Garth Goldwater
2020-06-18 09:29 #
https://hash.ai/about/mission advanced simulations in the browser? |
| 5 comments | |
|
|
Christopher Galtenberg
2020-06-17 08:48 #
via @Cyrus Omar https://twitter.com/prathyvsh/status/1272929797803397121 |
| 3 comments | |
|
|
Mariano Guerra
2020-06-17 07:19 #
How Domain Experts Create Conceptual Diagrams and Implications for Tool Design https://www.youtube.com/watch?v=O60RuV2gBMk |
| 10 comments | |
|
|
Kartik Agaram
2020-06-17 00:45 #
Some thoughts riffing on LoGlo (2 posts above): https://archive.org/details/akkartik-2020-06-17-LoGlo. 5.5 minutes. |
| 3 comments | |
|
|
Kartik Agaram
2020-06-16 17:28 #
AWS Lambda is getting really interesting: https://aws.amazon.com/blogs/aws/new-a-shared-file-system-fo… |
|
|
Christopher Galtenberg
2020-06-16 15:52 #
https://twitter.com/avibryant/status/1272966026251005953 |
| 11 comments | |
|
|
Will Crichton
2020-06-16 11:09 #
Errant thought: it would be fun to have some kind of “demo day” for FoC. Everyone working on a project can give a two minute lightning talk about it, and then do live demos / slack or zoom discussions for another hour. Have people vote on their favorite project for a small prize. |
| 7 comments | |
| # |
Andrew Reece
2020-06-16 10:52 #
I'll be streaming WhiteBox (live code debugger/previsualizer, WIP screenshot attached) development in 10 mins - back to working on persistent storage with SQLite Watch at: https://twitch.tv/azmreece Join the voice chat: https://discord.gg/xHgepxM |
| 1 comments | |
|
|
Xandor Schiefer
2020-06-16 05:01 #
Hi all, newbie here. Found this on the web recently, and I thought that this community might enjoy it: https://www.youtube.com/watch?v=8pTEmbeENF4 |
| 8 comments | |
|
|
Peter Damoc
2020-06-15 23:30 #
Hello, new person here, is there some kind of forum/wiki that accumulates the knowledge discussed in this slack? |
| 6 comments | |
|
|
Gregg Tavares
2020-06-15 23:20 #
I hadn't see this before. Probably not what most people here imaging to be the future of coding bit still interesting? https://www.paintcodeapp.com/ |
| 1 comments | |
|
|
Jimmy Miller
2020-06-15 13:27 #
Basically all documentation tools I’m aware of are aimed at communicating things others. Is anyone aware of tools that are instead focused on personal documentation? Tools that are tied into the source/source control in some way, but that are for personal use and not shared with others? Obviously people can make their own little conventions and things in stuff like org mode. But I’m curious if anyone is aware of purpose built tools for this. |
| 14 comments | |
|
|
Steve Dekorte
2020-06-15 12:47 #
No Code on Hacker News https://news.ycombinator.com/item?id=23520185 |
| 2 comments | |
|
|
Prathyush
2020-06-15 11:08 #
TIL Deutsch Limit: https://en.wikipedia.org/wiki/Deutsch_limit Etymology from this quip: “Well, this is all fine and well, but the problem with visual programming languages is that you can’t have more than 50 visual primitives on the screen at the same time. How are you going to write an operating system?” |
| 8 comments | |
|
|
Daniel Hines
2020-06-15 10:34 #
Why do you guys think COM interop in Windows has fallen out of vogue? At the surface, it seems like an awesome way to get apps working together, but I haven't seen it used in a very long time. |
| 2 comments | |
|
|
Felix Kohlgrüber
2020-06-15 00:38 #
I'm looking for papers / projects / programming languages in which the presentation / editing representation is text and the storage representation is decoupled from presentation / editing. In typical programming languages these representations are the same (code is edited as text and stored 1:1). In structured / projectional editing environments the editing representation is often non-textual. Even though these environments separate presentation from storage, it seems like a by-product while the focus lies on the editing experience. I'd like to see studies of the implications of separating presentation and storage representations for programming languages. I can imagine that this could help backwards-compatible language evolution, end a lot of syntax bike-shedding discussions and probably even let different programming languages share common concepts. I'm not the first one to think about this for sure, but I didn't manage to find useful resources. |
| 11 comments | |
|
|
Ivan Reese
2020-06-14 14:22 #
:lower_left_paintbrush: Episode 48 • Jennifer Jacobs • Para & Dynamic Brushes :art: There’s a small handful of people that I’ve been requested again and again to interview on the Future of Coding podcast. Jennifer Jacobs is one of those people. Her work on Dynamic Brushes in particular, and parametric drawing in general, occupies a major intersection between disciplines and provides insights that we can all apply to our own work. This interview touches on childhood education, programming tools for both non-programmers and expert programmers, tangible interfaces, wearable and embodied computation, aesthetics, the relationship between academia and industry, means of evaluating the efficacy of projects, geometric encodings of first-order logic, symbolic representations, whether Scratch could exist outside MIT, and more. Jennifer does a wonderful job articulating the nature her own work, but also the works of her collaborators, peers, and influences, so that we come away with a great understanding for the broader spaces in which her research fits. Jennifer is already am important figure in our Future of Coding field, and I am very excited to follow her career and see all the places the impacts of her work will be felt. You’ll notice right away that @Steve Krouse is sitting in the interviewer chair this time. This is the first of a handful of episodes that Steve recorded in 2019 but didn’t release. I’m planning to edit and release them throughout 2020, so you’ll hear a bit more of Steve yet. https://futureofcoding.org/episodes/048 |
| 2 comments | |
|
|
Steve Dekorte
2020-06-14 12:23 #
A paper on the history of Objective-C and (relevant to this group) it’s motivation of enabling a “software IC” marketplace. https://dl.acm.org/doi/pdf/10.1145/3386332 |
| 1 comments | |
|
|
Shubhadeep Roychowdhury
2020-06-13 05:33 #
Hey FoC community, here we are back with the first notebook in a series which shows how to use our codeBERT model for Python. https://colab.research.google.com/drive/17QNGQOsQOUBPlblqc7m… Comments and suggestions welcome :slightly_smiling_face: |
|
|
Tom Lieber
2020-06-12 21:51 #
Does anyone here have experience embedding WebAssembly VMs? I’d like to talk about where there’s any firm ground from which to start on a FoC idea. I can only find half-finished projects and systems that used to work. |
| 42 comments | |
|
|
Edward de Jong
2020-06-12 17:12 #
Kudos to @Jonathan Edwards for bringing this to my attention via tweet, here is a blistering article from the British Journal for the Philosophy of Science article https://doi.org/10.1093/bjps/axz029 entitled "Is peer review a good idea?". As an outsider to computer science academia, I found that the small group of gatekeepers was an incestuous bunch which only publishes each other, and represents a small clique who thrives on exclusivity, and blocked me the one time I tried to publish about Beads for vague reasons. A working product is better proof than a paper without proof, so it wasn't going to stop me, but it would have been nicer had i been able to publish the major features in an article so that I could get credit for the novel things. It is one of the forms of alternative payment currencies, to get credit for an invention or improvement. It is one of the reasons people publish, in addition to the communist ideal of increasing the public wealth. |
| 2 comments | |
|
|
Stefan Lesser
2020-06-12 08:21 #
As we have several fans of Christopher Alexander here, I don‘t want you to miss out on this gem of a talk I just came across: https://twitter.com/stefanlesser/status/1271442252078989315?s=21 |
| 4 comments | |
|
|
Tyler Adams
2020-06-12 02:56 #
Weekly update from CodeFaster. This week's topic is how to write a printf debug statement. It's a simple but important suggestion that's often overlooked. The post does the main job of making it clear how to use it from the examples. Some of the subtlties of the advantages were obscured in the writing. So I'll lean more on code examples and less on english prose https://codefaster.substack.com/p/printf-debugging |
| 1 comments | |
|
|
Andrew Reece
2020-06-11 11:46 #
I'll be streaming some WhiteBox (live code previsualizer/debugger) dev in a few mins, which you're very welcome to join. I'll be doing some bug fixes and working on some UI for status feedback. https://www.twitch.tv/azmreece Feel free to join the streamed voice chat: https://discord.gg/xHgepxM |
|
|
Spencer Baugh
2020-06-11 08:35 #
I haven't been looking at FOC stuff for a while, so asking this if anyone can give some advice: What are the best implementations of interactive UI usage of OOP interfaces? for example I'd envision seeing an object as a box containing a list of methods (and other objects it contains, also as boxes), and being able to click on a method, and having it expand to give me places to drag and drop other objects in, and then turning into another box representing the object it returns. (Specifically I'm interested in making such an interactive UI for an advanced low-level OS interface I've created, mostly as a way to teach the interface) |
| 5 comments | |
|
|
Nick Smith
2020-06-11 02:54 #
Has anyone ever seen an implementation of arbitrary-precision floats (N.B: not rationals) where you don't actually have to set the precision BEFORE you perform an operation? I want to do a sequence of operations and then round the final result, not round constantly and incessantly. It seems like no human on earth has ever implemented this before, which baffles me. (Edit: division is allowed to be rounded) |
| 38 comments | |
|
|
Rui Min Sim
2020-06-09 15:24 #
Hi, not sure if this is a good place to bring awareness to this: https://www.shutdownstem.com/who. I think in light of what is happening around us, it will be quite tone deaf of people who considers the future of coding not to consider the people making it happen. My DMs are open to people who want to share/discuss antiracism even within code. just today, I worked with a coworker to make sure we stop using black/white list and use block/allow list instead. seems rather trivial and we know the intentions wasn’t a racist one, but this is a purposeful change in our codebase to remove subtle/nonsubtle racism. |
| 8 comments | |
|
|
Andreas S.
2020-06-09 02:23 #
Hi this time I have a question for the channel... some tome ago I saw a Video of the Xerox Alto in the original research context. The Video Showed usage of the original GUI and possible applications of it. Could you please share some links that would be greatly appreciated! |
| 2 comments | |
| # |
prax08
2020-06-08 19:46 #
I put together a list of formal systems being used in biology: https://github.com/prathyvsh/formal-systems-in-biology The list is largely incomplete, but it was great to find that graphical notation by von Neuman used to explain automata, in the search. Also, look at the stuff by Vandrella. He’s doing some lit modelling stuff in his website. |
| 3 comments | |
|
|
Doug Moen
2020-06-08 06:41 #
What are best practices for writing a projectional code editor? What data structures do I use? Source code isn't text, it is a tree. Probably the tree is annotated with semantic information: What binding is this identifier bound to (if known)? What is the type of this subexpression (if known)? How do you keep the annotations up to date while the code is being edited? Commentary is obviously treated differently. In old school text based languages, a comment is /.../ or //...\n, is treated as white space by the lexical analyzer and discarded early: they don't appear in the AST. In a tree language, comments must work differently. They aren't a kind of white space that appears between tokens, they are either tree nodes or attributes attached to tree nodes. Examples of how this works? What is the syntax of a comment, and are there different kinds, depending on the part of a code tree they are annotating? For example, within a module (a list of definitions), a "section header" comment that introduces a block of definitions might be treated differently from a comment that describes a single definition. |
| 10 comments | |
|
|
Mariano Guerra
2020-06-08 01:39 #
Hi, a reminder about the existence of the FoC Newsletter: https://tinyletter.com/marianoguerra/letters/future-of-codin… But mainly to give good news: 1) Message attachments are listed as links in the history Example here they are not embedded because slack doesn't allow me 2) Solve the mysterious case of users not getting their username, it was because the API returns at max 1000 users and we went over it a couple weeks ago |
| 3 comments | |
|
|
Mariano Guerra
2020-06-07 04:36 #
https://blokdots.com/ blokdots is a simple to use software to build interactive hardware prototypes without writing a line of code. |
| 6 comments | |
|
|
Will Crichton
2020-06-06 19:57 #
Given recent events (as well related discussion of lack of diversity in FoC), I just wanted to mention — now is a good time to reflect on what role people of color can and should play in the future of coding. That starts with understanding the relationship of technology and race. I can recommend several great examinations of this topic in the HCI community: • Does Technology Have Race? https://dl.acm.org/doi/pdf/10.1145/2851581.2892578 • Critical Race Theory for HCI https://dl.acm.org/doi/pdf/10.1145/3313831.3376392 Not strictly race-related, but Morgan Ames also has some great work in critically analyzing hacker culture and techno-utopianism in education policy. https://dl.acm.org/doi/pdf/10.1145/3274287 |
| 37 comments | |
|
|
Jamie Brandon
2020-06-06 10:16 #
1.591449.html… What are people's thoughts on funding? |
| 21 comments | |
|
|
Michael Donatz
2020-06-05 06:01 #
This is what I want to see from a programming language: https://s.ai/nlws/ |
| 11 comments | |
|
|
S.M Mukarram Nainar
2020-06-04 18:46 #
http://okmij.org/ftp/Prolog/Soutei.pdf Delightful application of PLT principles to solve an actual problem. Debugging unix permissions problems is going to be more painful in the future because I'm always going to think back to this. |
|
|
Will Crichton
2020-06-04 16:26 #
I’m researching the influence of working memory in program comprehension. Question for the community: When you’re reading or writing a program, are there specific tasks/examples/etc. where you found it hard to remember things? Maybe you were flipping back and forth between documents, or you kept looking back to the definition of something. |
| 14 comments | |
|
|
Chris Martens
2020-06-04 11:11 #
Hey everyone, I’m chairing the AIIDE 2020 Playable Experiences track! Please send us your games, weird art, and interactive widgets that are informed in some way by AI, by Friday, June 12! Details are available here. Please consider submitting especially if you are not working in academia and/or if you are working with an arts/humanities focus. This track is a huge part of what makes AIIDE special, that we value many different forms of contribution. |
| 4 comments | |
|
|
Chris Knott
2020-06-03 16:01 #
https://twitter.com/hypotext/status/1268218080993386497 |
| 1 comments | |
|
|
Paul Butler
2020-06-03 13:07 #
What are people's thoughts on the future of no-code platforms with regards to open source? These days as a developer I see that languages where the only compiler is proprietary are increasingly niche, while widely adopted languages have an open source stack. Will the same thing happen with no-code platforms, or are the dynamics different? |
| 48 comments | |
|
|
Jamie Brandon
2020-06-02 11:21 #
I'm going to branch this off from the discussion on programming not progressing. > ...my impression is that programming got much better over the last few decades for large industrial users, at the direct expense of more convivial uses. More layers of abstraction to understand, more constant overheads for starting a project, more moving parts to maintain. But dramatically better distribution, tooling and scaling. It's notable though that the arc in most other technologies has been towards increasing scale and centralization at the cost of individual capacity. A few hundred years ago a single village could probably build their own carts. Now we're down to a dozen or so car companies per country. Most countries don't have the ability to manufacture their own cpus. I doubt anything in my house was created within a 100 miles of here. There is certainly very little that I could make myself. In "The Toaster Project" the author couldn't even find a modern text on iron production that didn't assume you had an entire factory - he had to work off a 16th century textbook instead. And when it came to more modern materials, he completely failed to produce plastic. I can't think of many exceptions to this arc. Writing comes to mind because we use it as a comparison to programming so often - used to be a centralized profession and now is practiced everywhere. I'm not even sure to what extent this is a problem. Specialization and economies of scale have been some of our main tools for progress. Maybe the future where programming only happens in thousand-person teams is the one where software works better? Either way, I think it might be important for this community to understand why most technologies progress in that direction and what makes the few exceptions different. One plausible answer is that, like writing, programming has some anti-economies of scale too. If we think of the trend in industrial software as trying to constrain software so that complexity scales linearly with size, then maybe we can find points of leverage in tools that abandon those constraints in exchange for more power in the small-software-niche. |
| 11 comments | |
|
|
Christopher Galtenberg
2020-06-02 07:28 #
Minimum viable browser quine https://twitter.com/Jermolene/status/1267801378430373890 |
| 1 comments | |
|
|
Temirlan Nugmanov
2020-06-01 17:38 #
So I have my consulting website on Notion made public with a tool called super.so…today, I got an email from a genuinely helpful person who alerted me that I had my projects/todos data available publicly. I told him it was on purpose for transparency sake (idk if its helpful for biz but that’s a separate conversation). He sends: "As a DBA (database architect) and developer for 23+ years, managing million dollar+ projects, I wouldn't use Notion in this public way. It's possible to run into sensitive info issues down the road when you forget to lock things down. You can't scale and maintain security because Notion simply doesn't have the features to provide scalable security for public facing Pages. I would instead create a fake project that you can demo and make public. And since the personal level is now free with unlimited blocks, you could create a separate "Demo" workspace without fear of ever showing sensitive data or running into block limits. I feel like this could be a good discussion. What are your thoughts? |
| 8 comments | |
|
|
Vitorio Miliano
2020-06-01 16:07 #
Anyone familiar with the work Synthetic Minds is doing? They've got an HN jobs post: > Synthetic Minds is building program synthesizers, i.e., automation that can write code. We have a working prototype in stealth and are currently in the process of doing user studies. Their site and Twitter look like it's about automated generation of smart contracts, and they held a summit on program synthesis last fall? https://synthetic-minds.com/ |
| 2 comments | |
|
|
Ivan Reese
2020-06-01 13:07 #
Because I think it's going to devolve… if you instead want to share thoughts about how software dev has made good progress in the past few decades, join my thread. |
| 19 comments | |
|
|
Steve Dekorte
2020-06-01 12:59 #
If you feel (as I’m guessing most of us here do) that software development hasn’t progressed very much in the last several decades, can you share any thoughts/theories you might have on why that has happened? |
| 25 comments | |
|
|
Maeliza
2020-06-01 08:02 #
Our Future of Coding project is taking shape :star-struck: We are building Machine Learning Model that can learn how to code :trophy: With @Shubhadeep Roychowdhury we are excited to release codeBERT. It's a Masked Language Model trained over Python source code thanks to Hugging Face. :joystick: You can easily load the model and its weights (code below) from transformers import * :chart_with_upwards_trend: Example of the results are in the thread below :books: Full tutorial on how to load and fine-tune the model for downstream tasks is coming! |
| 3 comments | |
|
|
Nick Smith
2020-05-31 19:09 #
Has anyone thought about, implemented, or encountered higher-level abstractions of ALUs? a.k.a. the part of hardware where actual computations are performed (as opposed to the miles of hardware dedicated to control flow management). Almost every programming language has an ALU abstraction based upon fixed-width chunks of binary digits (32 or 64-wide), arithmetic operations (interpreting the chunks as integers or IEEE floats), and bitwise and bitshift operations. Those fixed-width chunks are grouped into "allocations", which are either larger fixed-width containers (structs etc) or dynamically-sized arrays. Recently I've been thinking about a "clean slate" abstraction that still exposes the basic operations that ALUs are good at (integer arithmetic and bit manipulations) but without the fixed-width chunk limitations. Fixed-width chunks are purely a hardware design limitation and have no inherent value to a programmer's mental model; they just add complexity to data modelling. What DOES have value is the notion of a dynamically-sized bit sequence that can be manipulated via splicing operations (take, drop, insert, replace) that generalize bit shifts, bitwise operations (the same old &,|,^ operations), and the familiar arithmetic operations (add, sub, mul, div...). This is a natural foundation for arbitrary-size integers and sequences, but also for general computations that want an efficient mapping to hardware capabilities. I want to take an ALU abstraction like this and build my way-out-there logic programming environment on top of it, so that you still have a conceptual bridge to hardware, and thus you can still reason about the efficiency of basic operations and use them to create efficient user-defined data types. |
| 31 comments | |
|
|
korede
2020-05-29 22:53 #
https://twitter.com/ocornut/status/1266416887082221568 that last note seems really crucial. i feel like programming tools developers have a ton to learn from game engine people |
| 2 comments | |
|
|
korede
2020-05-29 16:29 #
dataflow programming tool built on top of the openFramework ecosystem: https://mosaic.d3cod3.org |
|
|
Zubair Quraishi
2020-05-29 14:26 #
What do people here think of Deno? |
| 4 comments | |
|
|
Jamie Brandon
2020-05-29 10:59 #
https://ourmachinery.com/post/the-story-behind-the-truth-designing-a-data-model/ > In short, by putting a lot of responsibilities on the data model you can make the UI code for the editor a lot simpler. This is really important to us, because one of the problems we had in Bitsquid/Stingray was that we spent a lot of time on developing UI and tools. Sometimes we would spend 30 minutes to add a feature to the runtime and then a week to create a UI for it. In The Machinery we wanted to address that imbalance and make sure that we could write tool and UI code as efficiently as runtime code. https://ourmachinery.com/writing-tools-faster.html > How Do We Fix it? > Automate undo, copy/paste, etc with a well-defined data model > Less busy-work > Minimize and own the tech stack > Make things explicit and easy to understand > Avoid changing frameworks > Control performance > Reuse UIs and generate them automatically from data > Properties, Tree, Graph, etc > Don't have to create an UI for everything. |
|
|
Jamie Brandon
2020-05-29 10:55 #
http://acko.net/blog/software-development-as-advanced-damage-control/ > When you look at code from a data-centric view, a lot of things start to look like stale or inconsistent data problems. I don't like using the word "cache" for this because it focuses on the negative, the absence of fresh input. The real issue is data dependencies, which are connections that must be maintained in order to present a cohesive view and cohesive behavior, derived from a changing input model. |
| 4 comments | |
|
|
S.M Mukarram Nainar
2020-05-28 17:38 #
What do people here think about t-expressions? https://srfi.schemers.org/srfi-110/srfi-110.html @Kartik Agaram I noticed your name in the acknowledgements, do you have any comments? |
| 33 comments | |
|
|
Clemens Klokmose
2020-05-28 03:32 #
Dear member of the FoC community, We would like to invite you to participate in a programming challenge as part of a research project. For the last eight years, we’ve worked on the Webstrates (https://www.webstrates.net) software platform as a way to explore software that’s inherently malleable and collaborative. In our team, we’ve worked on various iterations of tools for developing software with Webstrates and now we have something that we think is pretty neat, but we’d love to get some input from you. The programming challenge is to make a small multiplayer game where the players can change rules through programming using our Codestrates v2 development platform. The challenge will run for a little less than three weeks from June 10th to June 26th ending with an online demo session Friday the 26th at 15.30 CET. The programming challenge is open-ended, but expect to spend the equivalent of a couple of evenings to work on it. You can work on the challenge by yourself or in a group (all members should sign up). To participate, you are expected to have experience with Web development and JavaScript programming. We don’t expect that you have experience with game development but it’s fine if you do. We assume games to be publicly shared under Creative Commons Attribution 4.0 International (CC BY 4.0) unless otherwise is agreed with you. You sign up for the challenge here: https://www.survey-xact.dk/LinkCollector?key=HCPGJP41UK9J Sign up before June 8th at the latest. If you sign up we will contact you with further instructions, access to our system, and to a Slack workspace where all participants can chat and ask for help. You can at any time opt-out of the challenge. For us this challenge aims to: • assess the creative potential of the Webstrates & Codestrates tools. • evaluate the usability and understandability of Codestrates & Webstrates. • get input for the future development of the platform For you, it’s an opportunity to contribute to science by playing with some software that hopefully inspires you and challenges you to think of software differently. We cannot compensate you for your time, but we can provide you with an exciting experience. Our goal is to publish the results of the study at an academic conference or journal. Feel free to share this invitation personally to people you might believe are interested, but we ask you kindly not to distribute it broadly, e.g., on social media or the like. Best regards, Clemens Nylandsted Klokmose, PhD, Associate Professor Bjarke Fog, PhD student Digital Design and Information Studies Aarhus University Denmark |
| 5 comments | |
|
|
Clemens Klokmose
2020-05-28 03:31 #
Hi all, I would like to share this invitation to participate on a study on a new set of developer tools for our Webstrates platform. |
|
|
Maeliza
2020-05-27 20:52 #
Hey folks! Is anyone working/ interested by ML on Code? This is a topics I've been looking into with @Shubhadeep Roychowdhury. We believe it to be such a promising field for future of coding. :arrow_right: ground breaking function/docstring mismatch detection :arrow_right: pityless variable misuse :arrow_right: dope auto-complete ... Some really nice articles and pieces of code are getting out (you can keep a track here : https://ml4code.github.io/) . If you're interested in discussing about it or your projects that would be really great ! Let me know :slightly_smiling_face: |
| 12 comments | |
|
|
Garth Goldwater
2020-05-27 14:59 #
https://www.expressionsofchange.org/reification-of-interaction/ thoughts? I like this article a lot |
| 5 comments | |
|
|
Scott Anderson
2020-05-27 14:35 #
Has anyone played with https://beakerbrowser.com/ ? I just found out about it via Hackernews (https://news.ycombinator.com/item?id=23326329). Peer to peer browser with a built-in editor |
| 6 comments | |
|
|
Prathyush
2020-05-27 03:44 #
A fun visual programming language here: https://github.com/felko/ton-lang |
|
|
Tom Lieber
2020-05-26 12:41 #
Anybody still have a link to that article about making software for yourself, with a family video voicemail app as the example how great it is to not need authentication, etc? Or keywords I can use to find it? |
| 7 comments | |
|
|
Andrew Reece
2020-05-26 11:03 #
I'll be streaming some WhiteBox (live code previsualizer/debugger) dev in 20 mins or so, which you're very welcome to join. It will be a stream in which I reacquaint myself with SQLite and add some persistence between runs of the execution. https://www.twitch.tv/azmreece I stream with live voice chat, which you can join in my Discord: https://discord.gg/xHgepxM (@Kartik Agaram not sure if it's still the middle of your workday? I forget what time I was on last time) |
| 2 comments | |
|
|
Ryan King
2020-05-26 09:21 #
For those doing any sort of zooming / scrolling interface on the web. I've been discovering scroll speeds can be completely different according to os and browser :sob: https://stackoverflow.com/questions/5527601/normalizing-mous… |
| 7 comments | |
|
|
Ivan Reese
2020-05-25 08:25 #
https://twitter.com/warianoguerra/status/1264838036677853184 |
| 5 comments | |
|
|
Prathyush
2020-05-25 04:09 #
Interesting idea of cruising through computational structures in VR: https://twitter.com/IrvinHwang/status/1212448443962216448 |
| 1 comments | |
|
|
Mariano Guerra
2020-05-25 00:51 #
https://gbracha.blogspot.com/2020/05/bits-of-history-words-of-advice.html "I'm told ParcPlace declined an offer from Sun Microsystems to allow ParcPlace Smalltalk to be distributed on Sun workstations. Sun would pay a per machine license fee, but it was nowhere near what ParcPlace was used to charging." |
| 16 comments | |
|
|
Dalton Banks
2020-05-24 12:46 #
Are there any artists in the same headspace as folks like Alan Kay and Bret Victor, and who are exploring the “future of coding” through paint, sculpture, multimedia, etc? |
| 2 comments | |
|
|
Andreas S.
2020-05-23 01:25 #
Thoughts? |
| 9 comments | |
|
|
Andreas S.
2020-05-23 01:25 #
https://einarwh.wordpress.com/2020/05/19/into-the-tar-pit/ |
|
|
Mike Cann
2020-05-22 19:39 #
The moment in question is about 15minutes into the episode |
|
|
Mike Cann
2020-05-22 19:36 #
Hey guys. I have been going through listening to all the podcasts from the start because I find this whole topic deeply fascinating and want to make sure im up to date with everything before I start contributing here. I have one question however. In episode 3 "Inventing on Principle" with Jonathan Leung. @Steve Krouse and Jonathan discuss a whole bunch of really interesting things but Jonathan talks about an app I think he calls "Workflow" that he uses whenever he works on a task to help him structure how he tackles the problem. He mentions that he has shown the technique to many other people and they have all adopted it since. I would love to know more about this App and / or technique. Does anyone have any sources? |
| 5 comments | |
|
|
Daniel
2020-05-22 04:16 #
Hi all I'm working on DataPipes a flow-based editor for macOS. That is kind of my tribute to QuartzComposer that introduced me to the idea of flow-based programming. I always wanted to use this approach to something else than graphics - and here it is. The main idea is to use flow-based approach to dealing with data without touching code and as a result make it easier to use real(istic) data in the design process. Here is the short screencast of the current alpha version, any feedback highly appreciated! PS: If you think the app is worth your attention please join early access list at https://DataPipes.app https://www.youtube.com/watch?v=0t7pv2FbDxk |
| 12 comments | |
|
|
Shubhadeep Roychowdhury
2020-05-22 01:48 #
Hello All, today we announced our first open source library "Tree-hugger: Source Code Mining for Human". We published an article about it. Please have a read - https://medium.com/codist-ai/introducing-tree-hugger-source-… Also, here is the repo - https://github.com/autosoft-dev/tree-hugger Do not forget to star :star: it if you feel it may help you :wink: |
|
|
Vitorio Miliano
2020-05-21 10:23 #
Did anyone see the OpenAI code generation demo during Microsoft Build this week? Write a function name and a comment and OpenAI generated Python code that does that thing, and keeps context across functions? |
| 48 comments | |
|
|
Nikolas Martens
2020-05-21 10:18 #
Hi community. Who here is currently or was in the past working on turning their FoC project into a business? I'm considering it and would love to talk to somebody who has some experience with going in that direction. |
| 10 comments | |
|
|
Chris Granger
2020-05-21 08:43 #
Programming in plain English: https://osmosianplainenglishprogramming.blog/ |
| 82 comments | |
|
|
nicolas decoster
2020-05-21 08:04 #
I share this article by Olia Lialina as I think some people here might find the "Turing complete user" interesting, at least the term, if not the concept behind it and her point of view. I like how she talks about different ways of thinking about the "user". reader.lgru.net/texts/turing-complete-user/ |
|
|
Prathyush
2020-05-21 00:06 #
I tried to put together a list of all these newfangled Xanadu style “networked notebooks” that are coming out. With the help of Raghuveer and some friends I think I have made a somewhat comprehensive roundup, but I’d love to know if I have missed out any cool ones here: https://github.com/prathyvsh/networked-notebooks |
| 10 comments | |
|
|
Dan Voyce
2020-05-20 11:53 #
London creative coding is hosting another virtual meetup tomorrow. Come and join the fun wherever you are! https://www.meetup.com/london-creative-coding/events/270632015/ |
|
|
Michelle Valentine
2020-05-20 10:00 #
Hi folks! I wanted to share what I’ve been working on at Airtable - a new way to build apps! Today, Airtable is kicking off the developer preview of Custom Blocks with a $100,000 developer contest. With Custom Blocks, we’re letting developers increase the power of Airtable by building highly composable components on top of our end-user-friendly real-time database. Now you can spend 100% of your time focused on what makes your app unique and leave the rest to Airtable. The best part? Custom Blocks are built with Javascript and React. You can leverage npm’s 1,200,000+ modules to build almost anything you can imagine. Get all the details: https://airtable.devpost.com |
| 1 comments | |
|
|
Chris Maughan
2020-05-20 02:21 #
https://twitter.com/cyrildiagne/status/1256916982764646402?s=20 |
|
|
Shalabh
2020-05-20 00:17 #
https://www.theverge.com/platform/amp/2020/5/19/21260005/mic… |
| 16 comments | |
|
|
Ivan Reese
2020-05-19 11:06 #
Does anyone have handy any criticisms of Self-style prototypal inheritance? I'm not interested in performance, just the idea as a mechanism for dynamic data composition that lets you manage duplication vs references. What causes it to fail (eg: become unmanageable), where other kinds of data composition do not? Also accepting links to good summaries of how Pharo handles inheritance/composition. |
| 35 comments | |
|
|
Eddy Parkinson
2020-05-18 17:57 #
Programming language design - recommend videos/papers/conferences/journals. Please can you recommend any good videos/papers/conferences/journals on programming language design. I liked these : Robert Virding - On Language Design (Lambda Days 2016) - https://www.youtube.com/watch?v=f3rP3JRq7Mw - Why a programming language becomes messy. Erlang, for the phone system. Argues that we need more domain specific languages, rather than more kitchen sink style languages. JavaScript: The Good Parts - (Google Tech Talks) - https://www.youtube.com/watch?v=hQVTIJBZook - Classic talk. While JavaScript has many problems, he covers the Good Parts of the language. Alan Kay - Programming Languages & Programming (2013) - https://youtu.be/prIwpKL57dM - Explains the need for better programming languages. Covers problems like, maintenance, Lines of code reduction, demos a very old scratch like system, and an old drawing system. Wiki of Journals, publications, and conferences - https://en.wikipedia.org/wiki/Programming_language_theory#Jo… - I read a few, was hard to find topics of interest. Would be handy if they were grouped by problem domain. |
| 15 comments | |
| # |
prax08
2020-05-17 13:53 #
I catalogued some Visual Lambda Calculi here: https://github.com/prathyvsh/lambda-calculus-visualizations Anybody know of more of these? |
| 8 comments | |
|
|
Scott Anderson
2020-05-16 23:34 #
Visual Brainfuck interpreter https://franklin.dyer.me/htmlpage/brainfuck.html |
|
|
Roben Kleene
2020-05-16 14:24 #
I'm researching the history of extensions in text editors (e.g., like VSCode extensions https://marketplace.visualstudio.com/). I generally consider TextMate (released 2004) as the starting point of an era of text editors built around extensions. That for example makes Sublime Text, Atom, and Visual Studio Code all "TextMate-likes" in that their built around significant amount of functionality coming from share-able extensions. (Note that I'm making a distinction between extensible text editors, à la Emacs, and text editor extensions that are easily share-able packages/plugins/bundles, etc...) Other note-able milestones in the text-editor-extension era are the introduction of Pathogen.vim for Vim in 2008 and Package.el added to Emacs 24 in 2011. Light Table and Atom, released in 2012 and 2014 respectively, are also notable as the first popular web-based text editor built around extensions. Being web-based greatly increased the ease of writing extensions that involve GUI elements. I'm curious to hear about what others consider important milestones for extensions in text editors? For example, I'd love to hear more about any prior art to TextMate? Before package managers for Vim and Emacs, how did people share syntax highlighting files? And were there examples in other text editors that went beyond syntax highlighting, e.g., did any text editors prior to 2004 have a plugin system that could do more than just add syntax highlighting, like adding commands? |
| 7 comments | |
|
|
Grigory Hatsevich
2020-05-16 04:04 #
Lunch with Alan Kay, https://futureofcoding.org/notes/alan-kay-lunch.html: " “You also need to be embedded in a community of others who have diverse perspectives to bounce these ideas off of.” Alan argued passionately in favor of college and grad school. While he is well aware of its imperfections, he believes it’s still better than an “oral culture” or being an autodidact (just following your nose where your curiosity leads you)." Do you agree that college and grad school are the best way to learn? I think that traditional education system is "below what is actually needed"; there are some fundamental flaws in a system where other people decide for you what you should learn and how (they have neither knowledge nor incentives to decide what is best for you). I understand that we need to stand on the shoulders of giants and not reinvent the wheel all the time, but this is just a challenge of a non-coercive education system, and it is solvable. I think the best solution for education lies in this space, and we should look for / invent it here. We should raise the quality of learning collaboration to much higher level, we should seek mentors and thought leaders like Alan Kay and take their advice and recommendations, but it should be up to us learners to decide what to do with this advice. What is your opinion? |
| 2 comments | |
|
|
Mariano Guerra
2020-05-15 11:00 #
We started this new incubator out of Mozilla in order to work with & invest in developers, startups, and technology enthusiasts who are building things that will shape the internet and have a positive impact without needing to hyper focus on the bottom line. We call this our "fix-the-internet" incubator. https://builders.mozilla.community/ |
| 4 comments | |
|
|
Garth Goldwater
2020-05-15 09:34 #
----TODAYS DEVELOPMENT COMPLAINTS---- Context: I’m reimplementing a dragbox select a la: https://simonwep.github.io/selection/ or many other libraries because I need to deal with elements that are overlapping (I’m using it for dom element selection, but you could imagine selecting items in an outline and you’d have 60% of the hairiness). ---ISSUES IN THREAD BELOW--- |
| 13 comments | |
|
|
Ian Rumac
2020-05-15 06:38 #
Well, breaching the subject - what are your favorite ways to generate/template code? |
| 1 comments | |
|
|
Ian Rumac
2020-05-15 06:37 #
I thought this was a slack about it? I figure the future of programming is tightly coupled to productivity :) |
| 1 comments | |
|
|
Michael Coblenz
2020-05-15 06:17 #
For best developer productivity, stay off Slack. :stuck_out_tongue: |
| 3 comments | |
|
|
Tyler Adams
2020-05-15 05:30 #
anybody know any good channels for general developer productivity? |
|
|
Tom Lieber
2020-05-14 15:34 #
Now that we know how good ML models are at hallucinating plausible natural language, using them to recognize and complete coding idioms makes sense and I want it! https://kite.com/blog/product/kite-launches-ai-powered-javascript-completions/ |
|
|
Jean-Louis Villecroze
2020-05-14 10:03 #
If anyone here is interested in logic programming, I recommend this new podcast: https://thesearch.space/episodes/1-the-poet-of-logic-programming :+1: |
| 1 comments | |
|
|
Christopher Galtenberg
2020-05-14 08:26 #
I've always wondered why we've only ever had 2 axes of scrollbars - why not also z (and even t ) |
| 7 comments | |
|
|
Paul Sonnentag
2020-05-14 08:17 #
I’ve stumbled upon the concept of zooming user interfaces (ZUI). Here are two great examples that show the potential of it. I thought some of you might find this interesting. The first one is “Table Lens” from 1994 that allows users to “zoom-out” to see patterns in large tabular datasets. video: https://www.youtube.com/watch?v=ZDY9YCYv7z8 paper: https://dl.acm.org/doi/pdf/10.1145/948449.948460 The second example is a zoomable calendar called “Date Lens” that allows seamlessly browsing a calendar at different timescales. video: https://www.youtube.com/watch?v=fyWtt_7kYDg paper: https://www.microsoft.com/en-us/research/wp-content/uploads/… I’m wondering why this pattern is not more prevalent in today’s software. I’m not aware of any popular software that supports this kind of interaction mode. |
| 10 comments | |
|
|
Stefan Lesser
2020-05-13 05:32 #
So many great thoughts about software design, architecture, and open source: > “We talk about programming like it is about writing code, but the code ends up being less important than the architecture, and the architecture ends up being less important than social issues.” > http://neugierig.org/software/blog/2020/05/ninja.html |
| 3 comments | |
|
|
Felix Kohlgrüber
2020-05-12 23:50 #
I wasn't checking this slack for some time, but now that I did, I discovered that it passed 1,000 members, really cool! :tada: I stumbled upon Progressive WebAssembly Apps (PWAAs) yesterday and thought that they might be of interest for members of this group. It's basically just combining Progressive Web Apps (PWAs) and WebAssembly. The main selling points: • Cross-Platform (runs in every modern browser) • Native feel (mobile system ui integration, add to home screen, offline functionality, ...) • Installation as easy as bookmarking a website • Near-native performance using WASM For me, this feels like it could become the go-to solution for cross-platform apps. I'll probably write a Todo-PWAA (I need a replacement for Wunderlist anyway :P) to test this approach. Recording: https://www.youtube.com/watch?v=0ySua0-c4jg Slides: https://alexkehayias.github.io/webassemblysf-presentation-20190820/ |
| 16 comments | |
|
|
Ivan Reese
2020-05-11 23:43 #
:control_knobs: Episode 47 - Max/MSP & Pure Data with Miller Puckette :headphones: I heard an interview with Miller on another podcast (linked in the show notes), which focussed on the history of Max and Pd and the arc of his career. He dropped a few kernels of design-related ideas that went unexplored, so I decided to bring Miller on our show and have him go in-depth. We talked about the design of Max's scheduler (vs other kinds of realtime scheduling available in the early 80s), how he arrived at the visual "patcher" interface, why Pd looks and feels so spartan compared to Max, to what extent the patcher interface is actually visual as opposed to just a fancier CLI, and other notions that'd be interesting to folks designing their own live/visual programming environments. This episode is the shortest, tightest interview I've done yet. I'm also slowly dialling-in the sonic identity that I'd like the show to have. Not there yet, but getting closer. Enjoy! And please help spread the word about the show if you have a good way to do so. Show notes & detailed transcript: https://futureofcoding.org/episodes/047 |
| 14 comments | |
|
|
Emmanuel Oga
2020-05-11 13:27 #
https://en.wikipedia.org/wiki/Analysis_paralysis |
| 13 comments | |
|
|
Mariano Guerra
2020-05-11 02:37 #
Maybe the terminal will evolve into a useful UI before UIs do? https://www.willmcgugan.com/blog/tech/post/real-working-hype… and https://www.nushell.sh/ show more interesting potential than anything new going on on UIs I've seen lately |
| 4 comments | |
|
|
Andrew Reece
2020-05-11 02:29 #
I'm not sure if there's a better channel for this... I'm working on WhiteBox, a live code previsualizer/debugger for compiled languages I'll be streaming some development in 10 hours: https://handmade.network/whenisit?t=1589223600&n=Andrew%…… Watch on https://twitch.tv/azmreece I have live voice chat on while I stream, which you can join here: https://discord.gg/xHgepxM |
| 2 comments | |
|
|
Stefan Lesser
2020-05-11 01:48 #
> Building a company on Django in 2020 seems like the equivalent of driving a PT Cruiser and blasting Faith Hill’s “Breathe” on a CD while your friends are listening to The Weeknd in their Teslas. Swimming against this current isn’t easy, and not in a trendy contrarian way. > > … > > If Wikipedia were started today, it’d be React. Maybe? > > What if everyone’s wrong? We’ve been wrong before. > https://macwright.org/2020/05/10/spa-fatigue.html |
| 4 comments | |
|
|
Tom Lieber
2020-05-10 15:36 #
Is it no longer possible to copy permalinks to Slack messages? Or am I just not finding it in the redesigned menu? |
| 17 comments | |
|
|
Christopher Galtenberg
2020-05-10 12:27 #
http://a9.io/glue-comic/ - bravo @Max Krieger |
| 1 comments | |
|
|
Scott Anderson
2020-05-10 11:47 #
Nice block based environment for building simulations https://github.com/EiichiroIto/NovaStelo |
| 2 comments | |
|
|
Tom Lieber
2020-05-09 18:06 #
I’m finally reaching the end of the podcast episode about the community survey results and heard the suggestion for a “book club” where the books are FoC prototypes. Um… yes please?? Is anybody already organizing such a thing? I ran a mass in-person user study of my JavaScript debugger Theseus in the form of a class to teach JavaScript, and though I mostly remember the bugs and technical gotchas of installing my largely untested software on many stranger’s machines, it also led to incredible discussion and muuuuch better documentation, and I’d do it again in a heartbeat. |
| 4 comments | |
|
|
David Piepgrass
2020-05-08 20:13 #
Is anyone aware of a programming language or library that efficiently solves the problem of incremental reactive recalculations involving collections? I'm a fan of libraries that support reactive updates, such as Assisticant, KnockoutJS, MobX, Vue.js and SwiftUI, but I don't know of one that contains the algorithm I want. I'll explain the problem by example. Suppose you have: 1. an "observable" list of a million items, and you insert or remove an item somewhere in the list 2. a filtered list based on the million items showing perhaps a thousand of the items 3. a projection of the filtered list (map/select) So, when you insert or remove the item, the library should efficiently (and automatically!) propagate the change through the filtered list to the projected list. If the new or removed item is filtered out anyway, propagation should stop so the projected list is not notified of a change. Ideally, change notifications should be deferred in some way so that if several changes are made to the same list item in rapid succession, the derived items (2 and 3) would only be notified once. |
| 22 comments | |
|
|
Ivan Reese
2020-05-08 14:32 #
Anyone here work at Cycling74, or work on Pure Data? |
| 1 comments | |
|
|
Tom Lieber
2020-05-07 13:00 #
@Kartik Agaram in his Convivial Computing Salon Q&A: Mu has a "barbarian ethos" in the sense that barbarians trade with nearby settlements for technology they don't have, similar to how Mu minimizes dependencies, but he's creating it on a Mac, in a text editor, etc. |
| 18 comments | |
|
|
Chris Knott
2020-05-07 11:43 #
There's an (IMO) utterly cringe-worthy mobbing going on at the moment regarding a Github repo for the epidemiologists who produced an influential paper regard Covid-19 https://github.com/mrc-ide/covid-sim/issues/165 |
| 24 comments | |
|
|
Mariano Guerra
2020-05-07 11:38 #
This post seems to show the limitations of malleable systems: https://medium.com/diesdas-direct/notion-encourages-busy-wor… |
| 6 comments | |
|
|
Tom Lieber
2020-05-07 10:44 #
Stephen Kell during Convivial Computing Salon Q&A: "[C's] concept of memory is bigger than the process… avoiding the denigration of the outside." |
| 25 comments | |
|
|
Stefan Lesser
2020-05-06 10:55 #
This seems to have the potential for quite some impact on the future of coding, doesn’t it? What do you think? https://github.com/features/codespaces |
| 17 comments | |
|
|
Stefan Lesser
2020-05-06 06:28 #
I’m still working my way through Crafting Interpreters and just came across a nice piece of content that many here might get a kick out of: at the end of chapter 23 hides a design note, which is a fascinatingly deep critique of Dijkstra’s Goto considered harmful. There’s nothing really surprising or substantially new in there, but I really like how Bob Nystrom argues about the complexities that hide in a paper that practically ended a certain language feature. It’s relatively short and you don’t need to read any other part of the book; it totally stands on its own. Here’s a teaser: > I guess what I really don’t like is that we’re making language design and engineering decisions today based on fear. Few people today have any subtle understanding of the problems and benefits of goto. Instead, we just think it’s “considered harmful”. Personally, I’ve never found dogma a good starting place for quality creative work. > http://craftinginterpreters.com/jumping-back-and-forth.html#design-note |
| 11 comments | |
|
|
Nick Smith
2020-05-05 22:22 #
Warning: shower thoughts lie ahead. I've been struck with the nagging thought that maybe "FoC" general-purpose languages (targeting extreme accessibility) have to be designed in such a way that they can run on (modern) GPUs rather than just CPUs. Even integrated GPUs nowadays have a minimum of 200-400 general purpose cores (albeit with a slant towards certain operations). We don't really know how to use those cores effectively for general purpose tasks because we're normally trying to program them using a C dialect (e.g. via CUDA, OpenCL, GLSL...). It's the same problem we have with multicore CPUs: writing massively-parallelizable code in an imperative language is (too) challenging, and we've known for decades that we'll need to solve the problem eventually, since parallelization is the only way to scale computation once we're building circuits out of individual atoms. Only languages based on constructs that are implicitly parallelizable are going to be able to target GPUs effectively whilst remaining highly accessible. The alternative is to ask the user to explicitly divide their computation up into parallelizable work units (threads/actors), which is an immediate complexity trap. Programmer-led task division doesn't scale, and it's a deep rabbit hole that can require a PhD to be done effectively. Some people might argue that parallelization is a performance optimization and that most end-user apps don't need it, but I think there are many occasions where the ceiling of what's possible is just too low to offer a bright future. There are always occasions where someone comes up with a need like "I want to process this entire spreadsheet / note collection / webpage" or "I want to make a picture" or "I want to do a simulation / animation of my idea", and they want that processing to be interactive (implying instantaneous), at which point most serial languages can't handle what's being asked for. So, must a new generation of accessible programming languages be based on implicitly parallelizable constructs and 400 cores? The hardware APIs we need (Vulkan, WebGPU...) are finally becoming available. We just need to utilize them half-decently. |
| 57 comments | |
|
|
Ivan Reese
2020-05-05 10:49 #
Announcement: :christmas_tree: I've spun up a new channel for #of-functional-programming. If that's an area of interest for you then be sure to join. Note that this channel, like our other subject-specific channels (#of-end-user-programming, #of-graphics, #of-music, maybe others someday — see #administrivia) are intended for discussion by and for people who are sincerely enthusiastic about the subject. These are positive spaces, focused on studying and critiquing the ideas within the field, not questioning the field itself. If you'd like to call into question the merits of an entire field or practice, that belongs in #thinking-together... ...or perhaps in another community entirely if it's just a rehash of the same old tabs-spaces debate. After all, we all know that tabs are the supe-:dash: |
| 29 comments | |
|
|
Grigory Hatsevich
2020-05-05 04:12 #
Maybe it is a good idea to use zooming (ctrl + mouse wheel) to transition between various visual representations of the program. Zoom out — and you'll see the whole picture. Zoom in — and you'll see the code. Zoom in even further — and you'll see some details. Etc. I wonder how many different useful layers in between we can think of. Are there programming environments which somehow implement this idea? Do you like this idea? |
| 32 comments | |
|
|
Mariano Guerra
2020-05-05 03:25 #
Ask yourself: When’s the last time you used an app, or visited a website, that was made by an actual individual person? How many of the tools you use at work, or apps you spend time on for fun, come from a community that you're part of? If you’re a coder, when’s the last time you just quickly built something to solve a problem for yourself or simply because it was a fun idea? https://www.linkedin.com/pulse/code-great-heres-why-we-need-yes-anil-dash |
| 19 comments | |
|
|
Kartik Agaram
2020-05-04 20:20 #
Edwards, Kell, Petricek and Church, "Evaluating programming systems design", Psychology of Programming Interest Group https://alarmingdevelopment.org/?p=1358 Basically they're asking the following question: Assume we start writing interactive essays as the output of research. How does the review process change? How do we maintain academic rigor? |
|
|
Shubhadeep Roychowdhury
2020-05-04 13:14 #
How dev tools were created? Which kind of tools were used by the first generation programmers? How did they evolve? We often have these questions in mind, here is a nice article which can give a little glimpse in it. - https://medium.com/codist-ai/dev-tools-are-dead-long-live-th… Feel free to give us any feedback you may have. |
|
|
Doug Moen
2020-05-04 09:19 #
> i am only too familiar with internet security flaws. However, it is the basic protocols of the internet that are at fault, not how they are implemented. In order to understand the cause of internet security bugs, you need to look at the actual bug reports, and at the code where the bug occurs. See cve.mitre.org and the twitter feed @CVEnew. The majority of these bugs are the result of coding in an unsafe language. When I was working in the network security industry, the unsafe language was usually C, and the bugs were buffer overflows, use-after-free bugs, etc: these are vulnerabilities that would be prevented by coding in a safe language. Today, a lot of network exposed code is written in higher level languages than C, but the code continues to be full of security holes. It's not commonly understood why these higher level languages are unsafe. I'm going to arbitrarily look at today's latest CVE, which is <https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-12641>. This bug "allows attackers to execute arbitrary code via shell metacharacters in a configuration setting for im_convert_path or im_identify_path". The bug is a result of executing bash code, and bash is an inherently unsafe language (ie, it is not pure functional). The problem here is that you can embed "$(cmd)" sequences in any bash argument, and this will execute a command that can have arbitrary side effects. In a pure functional language, evaluating a string-valued expression cannot have side effects. |
|
|
Brent
2020-05-04 07:31 #
Is anyone aware of a similar community to this; with a robotics && || AI focus? |
| 5 comments | |
|
|
Doug Schwartz
2020-05-04 04:42 #
Hey everyone. This is Doug from Seattle. I work at AWS, writing Go code for the docs. |
| 2 comments | |
| # |
Mariano Guerra
2020-05-04 01:09 #
:newspaper: The Future of Coding Weekly Newsletter is out, but most importantly, it's the first issue where I link to the conversations in the public static archive. More important than that is that I archived all conversations up to the point where slack allows me (Oct 11th 2019) and they are searchable/exportable in the new search page: https://marianoguerra.github.io/future-of-coding-weekly/history/ |
|
|
Shalabh
2020-05-04 00:42 #
Reminder this starts Monday: 1587478348.097300.html I copied the events into a public Google calendar: https://calendar.google.com/calendar/embed?src=a5d6rkt4qd1u5… |
| 6 comments | |
|
|
Mariano Guerra
2020-05-03 12:41 #
I'm archiving 2019 and it seems this slack started October 11th? |
| 6 comments | |
|
|
Edward de Jong
2020-05-02 17:01 #
to my knowledge the original designer for Swift left Apple, and they are now pursuing a kitchen sink approach to the language, with each version adding more crap. Swift used to be a pretty modest language, but is turning into a monster. Apple is pursuing a strategy of constant enhancement to the language perhaps so as to indirectly block Swift from stabilizing and becoming an Android platform language. Not that there was much danger, because a great deal of the language is dictated by the Cocoa underpinnings of OSX API sets. At least it has a very tight spec; the old ObjectiveC language that Jobs used at NextStep lacked a manual, and the spec was "whatever the compiler does". I wonder what the author of Swift will come up with next; not being tethered to OSX would give you a lot of freedom. |
| 9 comments | |
|
|
Stefan Lesser
2020-05-02 13:53 #
If you’re not yet locked in to either side of the imperative-vs.-functional debate, this podcast interview might have some thought-provoking ideas about where modern programming languages are headed: https://www.swiftbysundell.com/podcast/71/ |
| 1 comments | |
|
|
Edward de Jong
2020-05-02 12:39 #
@Doug Moen Spending most of my day every day dealing with 100 million intrusion attempts each 24 hours, i am only too familiar with internet security flaws. However, it is the basic protocols of the internet that are at fault, not how they are implemented. It is a fact that the early internet had zero concern with security, given that it ran on private leased lines between the universities. I remember visiting MIT at the dawn of the internet, and there was a terminal hooked between boston and berkeley. You could chat back and forth; it was fairly useless until the WWW came along. You are perhaps not familiar with Modula-2 which was Prof. Wirth's 10 year later sequel to Pascal. In Modula-2 you can specify whether or not a called function has access to modify data, and along with other clever and simple features you can make rock solid programs that are as tight as it can be. And to claim that pure functional program is the answer to anything is not factual. If you are building a Chess game program, the state of the board is going to change, and any attempt to evade changing the state of the board is merely hiding the state changes somewhere. Minimizing the number of state variables, and making sure there is no redundancy (which is the source of many errors) is a virtue, but to pursue utter purity in avoiding state makes your program unable to do any useful work. John Backus who invented FP, who gave a lecture i attended in 1973 on his Functional language called Red at the time, was unable to finish his work, and his prior creation FORTRAN did battle with COBOL (and losing to an inferior language). He had the goal of interchangeable parts, but did not achieve it. There is little evidence that FP is bringing about an era of interchangable parts, and making it easier to maintain large programs, two of the most important unsolved problems in computer engineering. My own project revolves around using deduction, something nearly forgotten as it was last seen in the 70's in PROLOG. Since all programs must eventually map their syntax into the underlying instructions of the Intel or ARM processors, the only difference between 2 languages can be the convenience, conciseness, shareability, and maintainability of the notation. There are languages like FORTH that trade everything for brevity, but nobody programs in FORTH because it is unmaintainable. The ability to share components in the FP languages I have seen is not exemplary. The idiocy of having millions of programmers reinvent the same programs over and over is quite absurd. Look at Google's code pile; they must be close to 10 billion lines, it is ridiculous. I can't recall a time when i found some nice chunk of code on Github and was able to use it. There are billions of lines there, but it is all disorganized, full of dependencies i don't want to carry, and of unknown quality and reliability. So to ensure things work i end up writing almost everything myself. People like me are part of the problem, but i don't have access to a marketplace of nice little widgets like Apple's iTunes App Store has for full apps. That would be a really useful thing. |
|
|
Doug Moen
2020-05-01 06:58 #
Tangible Functional Programming by Conal Elliott • apps are user-friendly (usable, concrete, visual) but limit functionality, aren't composable • software libraries are programmer-friendly (composable, abstract, syntactic) The dream is: unlimited access to functionality, usably and composably. How? • Unix pipes are a composable text-mode UI, but we lose the GUI. • A Tangible Value is a typed value (model) paired with a GUI (view, controller). GUIs are composable whenever their underlying values are composable: eg unix-like pipelines, function composition. http://conal.net/blog/posts/tangible-functional-programming-… |
| 11 comments | |
|
|
yoshiki
2020-04-30 21:29 #
Anyone know of programs for visualizing and understanding assembly and/or CPUs? Thinking kind of what Bret Victor does with Learnable Programming and Inventing On Principle but applied to lower level code. I am guessing there’s industrial software in this general category but am especially interested in programs with a pedagogical angle. |
| 20 comments | |
|
|
Jamie Brandon
2020-04-30 16:31 #
"On the usability of editable software" https://flak.tedunangst.com/post/on-the-usability-of-editable-software https://lobste.rs/s/qkpwpa/on_usability_editable_software Lots of room for thinking about how language design affects the ability to customize software without the anticipation of the original developer. Eg emacs lisp allows redefining functions without having to fork the original library. Eg languages with private/public settings that are enforced by the compiler completely prevent that kind of reuse/rediting, forcing the user to fork which is a pretty heavy-weight operation. |
| 16 comments | |
|
|
Roben Kleene
2020-04-30 09:02 #
Recently there's been some discussion about how people mainly use spreadsheets for making lists (e.g., according to @Chris Granger and @Jonathan Edwards, most users have never even made a formula). If that's true, than what is the state of the art for end-user programming? Does the 1% of users that have created a formula still trump everything else? Or does that mean there's another model that we should consider more successful? And even if the spreadsheet is still the most successful model, what's the second most successful? Because the gap between the first and the second is in reality much smaller than many of us assumed. |
| 30 comments | |
|
|
Jared Windover
2020-04-29 11:53 #
Lately I’ve been working on and thinking about gui layout. I’m building a gui builder, and I’m trying to figure out what the interface should be between parent and child components to allow for maximum flexibility of layouts while still having things mostly just work when they get combined. I’ve been taking inspiration from the existing gui toolkits (html/css, QT, GTK, WinForms), and from more fanciful gui designs (the iron man interfaces, rainmeter skins). I’m trying to understand what tradeoffs are being made in these systems in a holistic way. Like, what layouts are expressible. I would like to generalize away from are the heavy focus on rectilinearity. Things I’ve been imagining are force-based layout algorithms, and some sort of path-based deformation/matching between child and parent, but they’re just thoughts for now. Has anybody come across any literature on these sorts of topics? The only thing I’ve come across is constraint-solvers. |
| 24 comments | |
|
|
Ivan Reese
2020-04-28 10:07 #
One of our lurkers, @Alex Wein, whipped up this beautiful interactive display based on the community survey. I think you'll enjoy playing with this. https://observablehq.com/@a-lexwein/what-future-of-coding-to… |
| 15 comments | |
|
|
Paul Butler
2020-04-27 16:50 #
I've been thinking lately about a genre (for lack of a better word) of coding pedagogy that involves presenting the learner with a series of tasks of escalating difficulty with very little new content to read/study in between. Some examples I consider to fall under this are: • Project Euler (number theory / recreational math) • rosland.info (bioinformatics) • exercism.io (language-specific tracks) Are there examples of this style of learning in other programming domains? (e.g. 3d graphics, core CS, etc.) Other thoughts on this style of learning? |
| 22 comments | |
| # |
Ivan Reese
2020-04-27 12:14 #
One of the things that I learned while making the 2020 Community Survey is that... it was very hard for me to categorize our interests in a way that produced useful data. This question, "What FoC topics interest you most?" was my attempt at it, and it was a bit of a disaster! I think it would be exhausting to list all our possible interests, but grouping some them together also seems to have caused issues. The more we lean on the fill-in answers, the less we'll be able to identify shared interests because the way we describe them will be different. If we let people select as many answers as they want, we'll have a harder time visualizing the result set because we have to decide how to weight each selection. But if we limit the number of selections, Duncan gets really mad, and (sigh) rightfully so. I hope it's clear what I was interested in learning from this, but I think I bungled the execution. It'd be super interesting to hear how you would go able trying to structure this question. How would you build a survey that attempted to figure out what our most central interests were, and to what degree we were interested in those things? The things to maximize are: how much can we learn, and how efficiently and painlessly can we collect that data from people? |
| 25 comments | |
|
|
Scott Anderson
2020-04-27 11:27 #
https://adactio.com/journal/16811 |
| 9 comments | |
|
|
Christopher Galtenberg
2020-04-26 12:29 #
SPARQL for RDF querying https://twitter.com/bobdc/status/1254431101440983043 |
| 7 comments | |
|
|
Mariano Guerra
2020-04-25 11:30 #
https://blog.metaobject.com/2020/04/maybe-visual-programming-is-answer.html |
| 19 comments | |
|
|
Mariano Guerra
2020-04-25 04:55 #
This week's newsletter will have the first link to the archived week in html and markdown :slightly_smiling_face: sneak peek: https://marianoguerra.github.io/future-of-coding-weekly/hist… and https://marianoguerra.github.io/future-of-coding-weekly/hist… |
| 10 comments | |
|
|
Ivan Reese
2020-04-24 23:43 #
:trumpet: Episode 46 of the podcast is now a thing that exists in the world! Oh what's that? :bar_chart: The results of the first ever Future of Coding Community Survey are now published! Can we do one more? :studio_microphone: I made a 10+ minute long audio piece exploring what the future of coding means. In the bastardized words of the crazy one — Episode 46. Survey results. The true meaning of FoCmass. These are not three separate projects. https://futureofcoding.org/episodes/046 :cake: |
| 30 comments | |
|
|
Stefan Lesser
2020-04-24 09:47 #
I'm working my way through Bob Nystrom's Crafting Interpreters (recommended — extremely approachable guide to creating your own programming language) and this part in chapter 12 just felt super relevant: > We language nerds have a tendency to fetishize minimalism. Personally, I think simplicity is only part of the equation. What we really want to give the user is power, which I define as: > > power = breadth × ease ÷ complexity > > None of these are precise numeric measures. I’m using math as analogy here, not actual quantification. > > Breadth is the range of different things the language lets you express. C has a lot of breadth—it’s been used for everything from operating systems to user applications to games. Domain-specific languages like AppleScript and Matlab have less breadth. > > Ease is how little effort it takes to make the language do what you want. “Usability” might be another term, though it carries more baggage than I want to bring in. “Higher-level” languages tend to have more ease than lower-level ones. Most languages have a “grain” to them where some things feel easier to express than others. > > Complexity is how big the language is (and its runtime, core libraries, tools, ecosystem, etc.). People talk about how many pages are in a language’s spec, or how many keywords it has. It’s how much the user has to load into their wetware before they can be productive in the system. It is the antonym of simplicity. > > Reducing complexity does increase power. The smaller the denominator, the larger the resulting value, so our intuition that simplicity is good is valid. However, when reducing complexity, we must take care not to sacrifice breadth or ease in the process, or the total power may go down. Java would be a strictly simpler language if it removed strings, but it probably wouldn’t handle text manipulation tasks well, nor would it be as easy to get things done. > > The art, then is finding accidental complexity that can be omitted. Language features and interactions that don’t carry their weight by increasing the breadth or ease of using the language. |
| 9 comments | |
|
|
Jack
2020-04-24 09:03 #
Hey all, excited about this online workshop. Hope everyone is doing well here! Bonus: happy Avril 14th if you missed it :grimacing: https://twitter.com/lildata/status/1250158507367817216 |
|
|
Jack
2020-04-24 08:57 #
• Examples of algorithmic practices from ancient history. • Recent outcomes of research and/or practice. • Speculative design fictions about not yet invented or impossible live coding interfaces. • Examples of craft culture informed community building and events relevant to live coding. • Remediations of traditional craft tools, materials and processes. • Craft practice inspired algorithmic pattern interfaces and novel computational media. • Tactile, tangible, gestural and bodily interfaces that write, run and edit live programs. • Augmented, hybridised and AI-based live coding systems. • Deconstructions and recompositions of 20th century computer interfaces. Submissions Deadline: 24th May 2020 Notification of acceptance will follow three weeks after the deadline. Submissions form: https://forms.gle/FN2mGPZNmHr3u6Pu8 We recognise that many are very short on time and energy during lockdown conditions. We have therefore made the submission process as light as possible. Armed with an idea, it should only take you 5-10 minutes to write and submit a proposal. If you have any further questions please contact hybridlive_@jarm.is._ |
|
|
Jack
2020-04-24 08:57 #
Call for Workshop Proposals: "Hybrid Live Coding Interfaces: performance and craft" • Permanent link to the call: https://hybrid-livecode.pubpub.org/pub/nimecfp • Shareable Tweet: https://twitter.com/jdkarmitage/status/1253625078899761152 • Venue: New Interfaces for Musical Expression (NIME) 2020, 21-25 July, Royal Birmingham Conservatoire, United Kingdom (hosted virtually). • Format: Research workshop with short ‘lightning’ presentations followed by moderated discussion. • Time and place: Online, three hour workshop, 21st July 2020 BST. (hours to be decided in response to participant survey). • Proposal deadline: 24th May 2020 AoE. • Participation fee: Free for all participants and presenters. • Outcome: Exchange and generation of ideas, new contacts and potential new collaborations. • Workshop chairs: • Shelly Knotts (University of Durham). • Jack Armitage (Centre for Digital Music, Queen Mary University of London). • Alex McLean (Deutsches Museum Research Institute / FoAM Kernow). • Contact: hybridlive_@jarm.is. The live coding field has grown over the past 20 years from a community of artists and researchers interested in “changing rules while they are followed” -- that is, the creative practice of using a computer programming language as a live interface, mainly in the performing arts. This field has since grown into the international “TOPLAP” community, with dozens of local nodes and offshoots such as Algorave algorithmic dance music events, with events taking place in over a hundred cities with growing media interest. Live coders have worked collectively to make their technology and culture accessible, with almost all systems shared as free/open source software, and attempts to instill inclusivity, diversity and safety across organisations and lineups. On this foundation, current research in the field is increasingly looking outward, beyond now well-established practices such as algorave, livecode network music and slow coding. This includes new interfaces based on old practices including the Stenophone made from a court transcription device, a live-codable loom based on ancient weaving technology, and experiments in punk genres such as riot grrrl remixed with live codeable machine listening tools. This workshop aims to bring together current thinking on how live coding techniques can be combined with other algorithmic practices, and augmented and hybridised with gestural and physical interfaces. A feature of this research is humility, as researchers realise that relatively young computer science innovations have everything to learn from physical interface designs, which have developed through practice over hundreds and perhaps thousands of years. This online workshop explores these themes through discussion and exploration of interfaces and practices. This is a call for proposals for short demos, talks and other interventions exploring hybrid live coding interfaces in performance and craft. Proposals could present: |
|
|
noahtren
2020-04-23 22:06 #
A question I've been wondering about recently is why aren't programming languages more... modular? Like, why isn't there a system for using X interpreter/compiler with Y syntax? Every language is bound to a specific runtime environment and syntax, but would it be possible to mix and match these somehow? |
| 21 comments | |
|
|
Tom Lieber
2020-04-22 13:07 #
The Googler book on how different engineering is with tens of thousands of developers is apparently out! https://twitter.com/gergelyorosz/status/1253051516228952067 |
| 31 comments | |
|
|
Mariano Guerra
2020-04-21 07:37 #
http://tomasp.net/blog/2020/data-exploration-calculus/ |
| 4 comments | |
|
|
Jonathan Edwards
2020-04-21 07:12 #
The Convivial Computing Salon will be held on Zoom May 4-9. Each session will include a presentation, a response, and a public Q&A https://docs.google.com/spreadsheets/d/1tuyRit9qQN1kwckS3rND… |
| 6 comments | |
|
|
Mariano Guerra
2020-04-21 01:19 #
https://billwadge.wordpress.com/2020/04/20/the-intensional-spreadsheet/ |
|
|
Mariano Guerra
2020-04-20 11:57 #
https://www.youtube.com/watch?v=jtQMV8InOMY |
| 9 comments | |
|
|
Stefan Lesser
2020-04-19 07:01 #
This post by Dorian Taylor <https://doriantaylor.com/agile-as-trauma> makes a few connections I found interesting: 1. Framing the agile movement as a response to trauma — I suspect many other things in our industry could be framed that way? 2. Composition naturally leads to iterative process — not sure if that “naturally” there is justified, but certainly an observation to ponder. 3. How collaboration is such an important part of the agile approach although “programming itself is a quasi-solipsistic activity. A programmer requires, strictly speaking, no more collaboration than does a novelist or painter.” 4. “[T]he presence of a feature can only indicate to a user if a goal is possible, behaviour will determine how painful it will be to achieve it.” and “[Behavior] blurs the line between “fixing bugs” and “building features”, and coalesces the two into a unitary process of “sculpting behaviour”. 1. “Even in a world after programmers, there will still be the work of figuring out—albeit no longer in code—just what you want to tell the computer to do for you—how you want it to behave. There are still a lot of decisions to make aside from what framework you write it in, or whether you use NoSQL, or how you lay out the source tree. If you eliminate the decisions that involve getting the artifact to work at all, the remaining decisions are going to involve whether it works better one way than another. Most of these decisions are going to be the result of trial and error, and a sizable chunk of those are going to involve feedback from users.” And he touched a few other things we talked about here before. |
| 4 comments | |
|
|
Ian Rumac
2020-04-19 06:15 #
Yes - there is only 1 and 0, everything else is a relation built upon some rules in different viewpoints. |
|
|
Jacob Chapman
2020-04-18 23:04 #
has anyone seen this? http://www.try-alf.org/blog/2013-10-21-relations-as-first-class-citizen I think it's an interesting idea... I think almost all high-level programming can be done with only types, relations, and pattern-matching/destructuring. (of course, we will always need people or Machine Learning to find how to execute the high level code in efficient ways) |
| 22 comments | |
|
|
Ivan Reese
2020-04-18 11:40 #
:postal_horn: !channel :postal_horn: We have a new channel — #two-minute-week In this new channel, you can post a two minute video recapping your progress on your FoC project once each week. This will be a fun way for us to keep up on everyone's projects, get inspired, and distill our thinking into a concentrated form. There's a writeup with more info and recording tips on the website: https://futureofcoding.org/two-minute-week This is a brand new channel and a new mode of interaction for us, so if you have ideas or suggestions for neat things we can do now that this channel exists, drop them in #administrivia. I'm excited to see all the neat and varied projects we're all building, and follow their progress from week to week. :beers: |
| 8 comments | |
|
|
Nick Smith
2020-04-17 20:16 #
I've spent the last few days considering starting a blog, but I'm encountering a moral dilemma. I think humanity already overshares too often. I think we put a lot of half-baked thoughts in the public space, and the world consequently suffers from "information overload" where we can't figure out what to pay attention to / what is valuable. It happens in news media, social media, blog posts, and this Slack. In this Slack, the main instigator of discourse seems to be the posting of links (65% of posts in the last 3 weeks). How much time are we wasting on distracting tidbits of public information? So when I'm drafting ideas for a blog, I'm encountering this worry that my half-baked thoughts will just be further distractions. Notice that Bret Victor, who many of us here appreciate, doesn't have a blog. He doesn't share ideas until he's sure he has a valuable, coherent message, and sometimes he spends years preparing his next message. Perhaps this is the best way to communicate. Of course, many of us want to share ideas so that we can, in effect, "work together" on the future of programming. I think collaboration is valuable, but perhaps public communication is not the best way to do this. In a private setting, discourse is informal, and half-baked ideas can be happily lost to history. When people work together privately, they can filter through ideas rapidly, and only publish information when they have a battle-tested, coherent message. Unfortunately, private collaboration is still most effective in person, because humanity doesn't yet have the technology to digitize the experience that physical workplaces provide. Perhaps an in-person communication style is nevertheless one we should aspire to, to prevent the dissemination of half-baked ideas. I don't know how best to achieve this, but #two-minute-week seems compatible, at least. It's also unfortunate that our societal structure isn't conducive to the formation of altruistic "working groups", which would be the ideal collaborative environment, but that's a whole separate discussion which we've touched on before. Thoughts? |
| 11 comments | |
|
|
Daniel Garcia
2020-04-17 11:21 #
https://twitter.com/rsnous/status/1219926954633129984 |
| 12 comments | |
|
|
Kartik Agaram
2020-04-16 21:59 #
Don Knuth: "The Art of Computer Programming is a manifesto. It describes the way I love to do math and the way I wish I had been taught." :thinking_face: https://www.quantamagazine.org/computer-scientist-donald-knu… |
|
|
Christopher Galtenberg
2020-04-15 22:20 #
https://twitter.com/jonathoda/status/1250477469032996872 |
|
|
Josh Cho
2020-04-15 06:27 #
Are there any languages with explicit focus (and philosophy) around intermediary steps between ideas and working code? Modern programming languages feel like I must, in part, produce completed structures of code, rather than brainstorming and exploring. Programming inevitably alternates the code from working to not working to working to not working, etc, and we would benefit from languages that were more explicit about facilitating the ‘not working’ states. From my rough intuition, the ‘not working’ states of code outweigh ‘working’ state in terms of time and importance (e.g. compiler for code that is exploratory but does not work). REPL, for a very simple idea, is praised so much (and so widely used) perhaps for this reason — it facilitates intermediate steps. This would be a rough parallel to how Bret Victor mentions that “ideas are important” to him. I looked at Exploratory Programming, but it doesn’t seem to capture exactly what I want (i.e. goes a bit too shallow). EDIT: Also relevant, Histogram and Type-driven Development |
| 21 comments | |
|
|
Justin
2020-04-14 20:44 #
This is a great article that touches on psychology, languages, and language https://medium.com/@old_sound/programming-languages-are-not-… P.s. those references are :heart_eyes: |
| 10 comments | |
|
|
Stefan Lesser
2020-04-14 16:22 #
I came across a PICO-8 tutorial today. While I was aware of the platform, I didn’t know much about it. What I found most interesting is that the limitations, in particular the restriction to 8192 “tokens” that your Lua source code can maximally have, made the person conducting the tutorial optimize the code several times to reduce the number of tokens used. He achieved that mostly through basic refactoring, often using the DRY principle, but also sometimes making the code a little more concise/clever/obscure. This (artificial) limitation adds a dynamic to development for PICO-8 that I find fascinating. It adds a forcing function for “keeping code lean” which I haven’t seen like this anywhere else. The only other similar thing I can think of is the 140/280 character limit on Twitter. Or maybe demoscene contest categories that limit the code and/or binary sizes to a certain amount of bytes. Do you know of any other programming environments or IDEs that use soft metrics or hard limits or any other tricks to introduce an awareness for wastefulness to programming? And how do you feel about that as a means to improve code quality? |
| 17 comments | |
|
|
Shalabh
2020-04-13 15:47 #
malleable.systems is on HN now: https://news.ycombinator.com/item?id=22857551. People really missing what its about methinks. |
| 22 comments | |
|
|
Vladimir Gordeev
2020-04-13 07:53 #
stumbled upon this: https://medium.com/@mrjoelkemp/jvm-struggles-and-the-beam-4d9c58547410 I think this ability to represent running program spatially, ability to zoom in into any part is something that I certainly wish to have. |
|
|
Ivan Reese
2020-04-13 00:01 #
https://www.onegraph.com/ Is this interesting to our community? Asking for a friend. |
| 6 comments | |
|
|
Mariano Guerra
2020-04-12 11:01 #
Here's an idea that may go to meta but I think the wider audience of general is a better place, lately while I create the newsletter I get the feeling that it's becoming a link aggregator, don't get me wrong, the resources are great, some of the conversations about links are really interesting and this week there were at least 3 conversations that started without links which I find really nice. But my thought was that I wanted to see more of what you are doing/designing, even in small increments, maybe for some the feedback channel is a big monster that requires bret victor style demos or maybe is some impostor syndrome or something but I would like to see more of your stuff! That's why I want to propose a weekly activity for FoC (open to feedback on the format): W*eekly status update of what you have been working on, thinking, designing, setting up, what you did and what you plan to achieve next week. I propose the default format to be a video*, even if it's to a static image, I feel that video can be consumed in more contexts than text and people are less blocked by an open mic than an empty page. I propose the default length to be 2 minutes. If someone wants to write instead it's ok, but I can watch the videos while I cook, while I have breakfast or on the couch, reading requires (at least for me) a more specific setup and mindset, also it's good to get to know other people, at least their voices and to start training your presentation skills :slightly_smiling_face: what do you think? should we use the feedback channel or create a #standup channel of sorts? |
| 34 comments | |
|
|
Ivan Reese
2020-04-12 08:21 #
Friendly reminder (since we've had a few instances of this in the past few days) — When replying, please always reply in a thread. This makes it easier to follow discussions, avoids new discussion prompts being lost in the noise, and makes it easier to link back to discussions down the road. Addenda: As @Kartik Agaram points out in this thread, when starting a new discussion at the top level, type out your entire thought in one message. If you want to add additional details after sharing, edit your original message (use the ... hover menu on desktop, or tap-and-hold the message on mobile) rather than posting additional top-level messages. |
| 29 comments | |
|
|
Scott Anderson
2020-04-11 19:35 #
Spatial programming is something I'm interested and Nototo is software I haven't heard of that looks like it bumps into it a little bit |
|
|
Scott Anderson
2020-04-11 19:31 #
Although not explicitly about FOC, it is an interesting interface design write up |
|
|
Scott Anderson
2020-04-11 19:28 #
https://darkblueheaven.com/spatialsoftware/ |
| 1 comments | |
|
|
Tom Lieber
2020-04-11 16:46 #
https://twitter.com/wcrichton/status/1248733099996766210 |
| 5 comments | |
|
|
Scott Anderson
2020-04-11 13:20 #
I like the idea of accidental Turing completeness, it's actually something that scares me a little bit when designing sufficiently complex that might benefit from not being Turing complete (for security, performance and general complexity reasons) |
|
|
Scott Anderson
2020-04-11 13:19 #
Pretty relevant for this community https://www.gwern.net/Turing-complete |
| 5 comments | |
|
|
Doug Moen
2020-04-11 12:49 #
Fixed point is rubbish for a general purpose language. It has its place, especially on embedded processors with no floating point hardware, but in general you get worse numeric results, so you have to be much more careful in designing your code than you do with floating point. Rational arithmetic is so crazy expensive in both time and space that numerically intensive algorithms can become infeasible, thus forcing users to rewrite their programs in another language that supports floating point. There are many languages where computations don't have a total ordering: any purely functional language that uses data parallelism for performance (eg, using GPU hardware) has this characteristic. The serious ones used for real work use floating point. For example, Tensor Flow. There is actually no way to design a number system for a programming language that is "perfect". There are only engineering tradeoffs. For a general purpose language, floating point represents a local optimum that is hard to beat. |
| 18 comments | |
|
|
Kartik Agaram
2020-04-11 11:42 #
This morning I find myself (re?)reading the documentation on the command language for the Sam editor from Plan9: http://doc.cat-v.org/bell_labs/sam_lang_tutorial/sam_tut.pdf It's interesting to think of these command languages from the 70's as a necessarily linguistic way to describe gestural operations, purely because of the technical limitations of the time. For example, I think editors with multiple cursors may find something to crib from Sam. |
| 1 comments | |
|
|
Mariano Guerra
2020-04-11 04:54 #
Many languages have implementations of this http://speleotrove.com/decimal/decarith.html for example python https://docs.python.org/3.8/library/decimal.html |
| 7 comments | |
|
|
Konrad Hinsen
2020-04-11 01:17 #
Fixed-point is often a good alternative, but rarely well supported in languages. But there are important cases where it fails, and it's those you need to look at. Example: Generate random points in a sphere or a square, and sum 1/d^2 over all pairs of points, where d is the distance between the points in a pair. That's a cartoon version of computing gravitational or electrostatic interactions in physics. 1/d^2 is very large for short distances but very small for long ones, which however make up the majority of pairs. Doing this with rationals is prohibitively expensive. |
| 18 comments | |
|
|
Nick Smith
2020-04-11 01:08 #
And if the maximum size of the numerator is known as well, then you can optimize all the way to 32/64 bit Ints. |
|
|
Nick Smith
2020-04-11 01:06 #
Also you can "optimize away" the denominators of rationals if they're statically known, effectively giving you fixed-point arithmetic, which will be a bit faster. |
|
|
Nick Smith
2020-04-11 01:05 #
Yeah that :slightly_smiling_face: And yeah, rationals will take more resources to process, but my language isn't focused on C-like performance, so as long as I can prevent unbounded numerator/denominator growth through rules about where the programmer must accept a round-off step, then I think it would work quite nicely. |
|
|
Konrad Hinsen
2020-04-11 01:04 #
Right. Float arithmetic has built-in rounding after each step and that’s what makes it non-associative. |
|
|
Nick Smith
2020-04-11 01:03 #
Floats might be rational, but float + and float are not rational + and rational . That's the main problem. |
|
|
Konrad Hinsen
2020-04-11 01:02 #
Floats are a subset of rationals (except for Inf and Nan) that can be represented in constant memory space and processed in constant time. If you go for rationals only, you will have to deal with resource issues. Rationals as a default with floats as an opt-in optimization technique looks like an interesting design choice that I haven’t seen so far (but which I am considering myself for Leibniz). |
|
|
Nick Smith
2020-04-10 23:38 #
Surely someone has made a language with this design choice before (rationals and no *floats*)? I don't know of any examples. (Floats could be hidden in an "advanced menu" for backwards-compatibility and special needs only) Edit: I guess Scheme and Racket have "exact numbers" (rationals), though they have floats as well, and transcendental functions like sin() and cos() will return floats instead of approximated rationals, so you can't really escape using floats. |
|
|
Nick Smith
2020-04-10 23:36 #
Has anyone thought about the practicality of a (general-purpose) language without floating-point numbers? I've always been skeptical of floats, but in the language I'm designing in particular, computations don't have a total ordering, and so the most natural way to sum/multiply numbers is a SUM() or PRODUCT() function that accepts an unordered set (rather than looping through an ordered list). You can't use these functions for floats, because neither summation nor multiplication of floats is associative. I want my language to use BigInts (arbitrary precision) anyway, so I think I should just go ahead and have rational numbers (fractions) as the built-in type for fractional numbers. This would present some new design challenges, such as defining some ergonomic "round-off" functions that can be used alongside multiplication (and sin/cos/sqrt etc) to prevent unbounded growth of numerator and denominator sizes. |
|
|
Ivan Reese
2020-04-09 13:06 #
Help me fill in this spectrum of models of computation. • [Mechanical — designed to be built] • • Analytical Engine • Turing Machine • von Neumann • Rule 110 • Lambda Calculus • SKI Combinator Calculus • • [Theoretical — difficult, but of course possible, to make a physical machine for] Are these in the correct order? What other models exist that I should add here, and where should they go? |
| 25 comments | |
|
|
Max Krieger
2020-04-09 10:10 #
Really good read on language design and community management. Sometimes the principled design approach takes a toll on everyone when it's iterative https://lukeplant.me.uk/blog/posts/why-im-leaving-elm/ |
| 24 comments | |
|
|
Julius
2020-04-08 12:57 #
Looks like lynx took down their What page with gifs, anyone have an archive of the page lynxtool.com/What.html? Not on way back machine (cc @Ivan Reese) |
| 4 comments | |
|
|
Will Crichton
2020-04-08 12:57 #
The nocode (lowcode?) wars continue: https://www.useparagon.com/ |
| 8 comments | |
|
|
Shalabh
2020-04-08 11:59 #
http://tomasp.net/blog/2020/cities-and-programming/ |
| 1 comments | |
|
|
Josh Cho
2020-04-08 09:09 #
Are there any editors that can help me follow function tags without ‘breaking context’? Almost like how Brackets has inline CSS editing (brings up another part of the file so that you can easily compare and edit). Like floating windows, in a way. For instance, if I click a function, I can jump / edit it without immediately exiting the file with a pop-up or like with Brackets in-line. https://youtu.be/Fqt5COpqLuU |
| 3 comments | |
|
|
Samuel Squire
2020-04-08 04:40 #
One idea I've been thinking a lot about is the GUI layout engine being an interactive system in itself and self-organising. GUI elements should be self-assembling machines trying to find the right placement for themselves. Can't really be done in React, because React makes decisions about layout |
| 27 comments | |
|
|
Deepak Karki
2020-04-07 04:27 #
Reading list from Philip Guo’s Human-Centered Programming Tools class at UCSD http://pgbovine.net/human-centered-programming-tools.htm |
| 2 comments | |
|
|
Aria Minaei
2020-04-06 10:14 #
Why any fundamental improvement in software has to be a generalisation https://blog.metaobject.com/2020/04/why-any-fundamental-improvement-in.html > The only way out I see is that change has to be both radical while also including the status quo, and the only way I can see of achieving that is if it is a generalisation, sort of like quantum mechanics generalised classical mechanics, superseding classical mechanics but still including it as a special case. (Or how circles were generalised to ellipses etc.) |
| 7 comments | |
|
|
Mariano Guerra
2020-04-06 01:13 #
The Future of Code Newsletter is out! https://tinyletter.com/marianoguerra/letters/future-of-codin… I stopped mentioning it to avoid spamming with obvious things, but since we reached a 1000 members (:tada:) and someone asked me if it was automatic membership I decided to remind the newcomers (:wave::skin-tone-4:) that you can sign up for the weekly newsletter here: https://tinyletter.com/marianoguerra/ |
| 2 comments | |
|
|
Ivan Reese
2020-04-05 13:06 #
More fuel for the hashtag-#nocode fire: https://news.ycombinator.com/item?id=22786853 |
|
|
Doug Moen
2020-04-05 10:47 #
I just downloaded K from Shakti.com. The executable is 84728 bytes on Linux (after stripping the symbols), depending only on libc. That is pretty compact for what you get: a powerful array-oriented programming language plus a high performance column-oriented database, and a REPL. If I slim Curv down to just the interpreter and compiler (no REPL, no UI, no OpenGL or mesh export) then the executable is 3.5MB without symbols: 42x larger. K is arguably a more powerful language than Curv, and it is definitely much faster. |
| 39 comments | |
| # |
Temirlan Nugmanov
2020-04-04 10:42 #
i'm working in no-code education. to form an opinion on the future of this field, its important for me to understand computing from first principles. however, my learning trajectory has been all over the place. two years ago, i took a "digital revolution" course at nyu that had a lot of super interesting readings (syllabus). the one that stuck out most for me was the 1945 essay "as we may think" by vannevar bush. from what i recollect, the predictions that bush outlined served as a thought framework for modern web hypertext. he described the "memex" — a device in which an individual stores all his books, records, and communications, and which is mechanized so that it may be consulted with exceeding speed and flexibility (image attached). essentially as system of storing, manipulating and retrieving records to supplement memory. it would work like the human mind, or bush’s integration of it, in that it would let the user create “trails” by linking separate microfilm records together by association. these trails would stay in place until further adjustment and could be shared between owners of memexi. while projection and keyboard elements of the physical description sound a lot like a desktop computer, technologists throughout the decades have focused much more on the proposed functionality of the machine and how it served as a foundational framework for hypertext. so anyway my weekend discussion prompt is: what research, literature, videos (or any content) has been influential to forming your thoughts on computing? what would you consider essential reading? |
| 15 comments | |
|
|
Kartik Agaram
2020-04-04 09:58 #
There's something going on here: https://mastodon.social/web/timelines/tag/hyperjam. Seems related to HyperTalk. Possible origin story: https://mastodon.social/web/statuses/103922731119272193 |
| 1 comments | |
|
|
Paul Butler
2020-04-03 14:49 #
Is there a good modern example of a structured editor? My main worry about structured editing is that a naive implementation raises the floor but lowers the ceiling, in the sense that I'd be slower in a structured editor than in a regular editor with a language I know well. I'm especially interested in examples that disprove that (I believe it's possible, I just think it would take someone smarter than me to do it :)) |
| 9 comments | |
|
|
Temirlan Nugmanov
2020-04-02 23:50 #
I just joined this group but I think this could be an interesting discussion from Indie Hackers (not written be me): “I’ve been thinking recently about API businesses. This movement seems to have started with some companies many Indie Hackers will know well, such as Stripe & Twilio. I’m seeing it more and more: • Plaid - API for open banking • Duffell - API for travel • Pay It Off - API for student loads • Alpaca - API for open banking I wanted to understand what makes these markets suitable for APIs as a business. Thinking out loud here... 1. There seems to be a bias towards finance/fintech 2. The underlying supplier seems large, slow, complicated incumbents (banks, airlines, etc) 3. Some of these are regulated industries Any other things you noticed about these API companies? What makes them good businesses? Has anyone else seen any other interesting API businesses?” |
| 10 comments | |
|
|
Will Crichton
2020-04-02 13:53 #
Are there any resources for learning about extensible systems? Looking for examples of systems, architecture designs, so on. Thinking of systems like: Emacs, Racket, entity component systems, event systems, browser extensions, dependency injection. |
| 18 comments | |
|
|
Deepak Karki
2020-04-02 10:51 #
https://physicstravelguide.com/ - Found this rather interesting, kind of like a multi-level wikipedia For example each equation/concept section has various “views” to it - Intuitive, Concrete, Abstract, “Why is it interesting?“, Research, Definitions, FAQ, History. This gives a much more holistic view of things as compared to what wikipedia provides today. I find this much more learner friendly as compared to current textbooks! |
| 3 comments | |
|
|
Chris Maughan
2020-04-02 09:55 #
Sorry for the late message; it just occurred to me that folks here might be interested. |
| 5 comments | |
|
|
Chris Maughan
2020-04-02 09:55 #
I'm not an organizer, but going to attend; it's in about 30 mins :wink: |
|
|
Chris Maughan
2020-04-02 09:54 #
https://www.meetup.com/london-creative-coding/events/269708179/ |
|
|
Scott Anderson
2020-03-30 17:59 #
https://medium.com/@smarimc/when-programming-became-a-chore-a0be2b9919c0 |
| 13 comments | |
|
|
Alan Laidlaw
2020-03-30 11:21 #
@Mariano Guerra great newsletter! I wasn't familiar with Glamorous Toolkit or Lasp! And https://storyscript.com/ is beautiful. Do you know of any projects that apply the same approach to knowledge management? (Similar to Roamresearch or Coda but less app and more framework.) |
| 7 comments | |
|
|
Vladimir Gordeev
2020-03-30 10:21 #
Currently I am preparing video demo for my generic tree editor. I would like to mention interesting programming languages/environments that store code as structure, not as text. For now I have Dark Language, Subtext and Lamdu in mind. What are other programming environments that are worth mentioning? |
| 13 comments | |
|
|
Allan MacGregor
2020-03-30 08:54 #
Apologies if this has been discussed already but what do you guys think the current situation will impact some of the initiatives you are working. Right now is possible this will drastically change the prevalence of working remote. Does this change the way we work ? |
| 13 comments | |
|
|
Roben Kleene
2020-03-30 06:04 #
Apple Testing AR/VR Headset With HTC Vive-Like Controller, Crosswalk Bowling Game, and More - MacRumors https://www.macrumors.com/2020/03/26/apple-ar-vr-headset-controller/ |
|
|
Dan Voyce
2020-03-30 01:03 #
Come join us (and @George Profenza), wherever your are https://www.meetup.com/london-creative-coding/events/269708179/ |
| # |
Daniel Garcia
2020-03-28 13:44 #
Lately, I've been having fun reading about Jeff Raskin, here is an interview with his son about The Humane Environment (THE), it's kind of a replacement for an Operating System https://web.archive.org/web/20090416094850/http://acm.org/ub… |
| 5 comments | |
|
|
Shalabh
2020-03-28 11:41 #
https://www.dropbox.com/s/ihrg4fg3f95kakq/tyranny-apply-eval… > Can Programmers Escape the Gentle Tyranny of call/return? > A paper from Marcel Weiher arguing against the prevalence of the call/return pattern and for replacing it with something more general. |
| 60 comments | |
|
|
Deepak Karki
2020-03-28 02:29 #
https://blog.jupyter.org/a-visual-debugger-for-jupyter-914e61716559 |
|
|
Ivan Reese
2020-03-25 09:35 #
https://twitter.com/jashkenas/status/1242845185752453121 |
| 3 comments | |
|
|
Mariano Guerra
2020-03-23 03:03 #
Slides here: https://marianoguerra.github.io/presentations/2020-berlin-bo… |
| 21 comments | |
|
|
Mariano Guerra
2020-03-23 03:02 #
My talk at Bob Konf is available online: "Programming by any other name" https://www.youtube.com/watch?v=dZC_eDU60M&list=PLHvf3g… |
|
|
Mariano Guerra
2020-03-23 01:42 #
I received the newsletter with corrupted emojis, am I the only one? #ThePresentOfCoding |
| 6 comments | |
|
|
Scott Anderson
2020-03-21 08:58 #
https://sci-hub.tw/https://doi.org/10.1016/S1045-926X(05)80016-3 |
| 4 comments | |
|
|
Michael Mamic
2020-03-20 15:25 #
I've been researching formal logic and came across Begriffsschrift, a book by Gottlob Frege which details what I would consider the first programming language in history. It was published in 1879 yet many of the ideas outlined in its premise remind me of what this community is trying to accomplish. The actual notation that this book describes is not too relevant but I would encourage you to read the four page premise that Frege wrote. Note that this comes after the translator's note, which is the first thing in the PDF. PDF is here. |
| 9 comments | |
|
|
Deepak Karki
2020-03-20 08:40 #
First time I’ve heard of “Malleable Systems”. From what I could gather it refers to systems that permit end user programmability / heavy customisability |
| 20 comments | |
|
|
Deepak Karki
2020-03-20 08:38 #
https://malleable.systems/catalog/ > This catalog highlights projects, people, groups, research, discussions, and other initiatives in the malleable software community. It is our hope that bringing more awareness to these efforts will lead to greater collaboration and better systems for us all that support the essential principles of malleability. |
|
|
Deepak Karki
2020-03-20 03:45 #
The Cambridge Handbook of Computing Education Research https://www.cambridge.org/core/books/cambridge-handbook-of-c… > This Handbook describes the extent and shape of computing education research today. Over fifty leading researchers from academia and industry (including Google and Microsoft) have contributed chapters that together define and expand the evidence base. The foundational chapters set the field in context, articulate expertise from key disciplines, and form a practical guide for new researchers. They address what can be learned empirically, methodologically and theoretically from each area. The topic chapters explore issues that are of current interest, why they matter, and what is already known. They include discussion of motivational context, implications for practice, and open questions which might suggest future research. The authors provide an authoritative introduction to the field which is essential reading for policy makers, as well as both new and established researchers. |
| 1 comments | |
|
|
Brent
2020-03-19 11:42 #
Hi all, I would be interested to hear thoughts on the current state of educational environments for programming skills and paradigms. I'm wondering if with a somewhat enhanced approach to sharing knowledge in our domain - certain things could be learnt (far?) more efficiently. Stretch goal would be to be learn the interesting parts of the go lang compiler in the morning, and compare their design decisions and trade offs to the internals of the dotty compiler in the afternoon. To me; its another angle on "accidental complexity." There certainly are a number of hard bits in building and understanding software; but, whenever I start to get my head somewhat around a code set; I generally feel that the interesting / insightful / useful bits of the solution are far too buried in boilerplate and various other forms of noise. I think the "learning" angle is a useful perspective to keep in mind. I do mainly mean it in the read a textbook / blog post, watch a youtube video, attend a (virtual) conference, go to coding bootcamp / university, onboard a new joiner to your team kinda way. But; I also feel that "learning" is pretty much all we are every trying to do. "Learn" how to implement this Rest API and make it slightly more testable than our last attempt. "Learn" what the root cause of this bug taking down our entire production platform is etc. Of course; all thoughts and comments welcome - I would be interested to hear peoples views on points such as - what events stand out as important learning points in your path to technical enlightenment? - what approaches have been used to "get up to speed" in order to contribute to open source software? Perhaps from the "how did you learn enough stuff to be useful" perspective - how well (or not) have you seen the "living" knowledge of a code-set be managed in secular projects? - Is Udemy all we should hope for; or could we build better environments within which to have our discussions? |
| 18 comments | |
|
|
Christopher Galtenberg
2020-03-18 08:13 #
Love this point, from a worthwhile thread https://twitter.com/geoffreylitt/status/1240291135106494466 |
| 5 comments | |
|
|
Scott Anderson
2020-03-17 14:13 #
But for indies and individuals it will be more adhoc, some talks will be postponed until later events or GDC 2021 etc |
|
|
Scott Anderson
2020-03-17 14:12 #
For corporate and sponsored talks this will be from official online streams (like Sony's PS5 architect overview tomorrow) |
|
|
Scott Anderson
2020-03-17 14:11 #
So content will be shared in adhoc fashion from random sources |
|
|
Scott Anderson
2020-03-17 14:11 #
https://gdconf.com/gdc-2020-virtual-talks?_mc=blog_x_gama_le… |
|
|
Scott Anderson
2020-03-17 14:11 #
Yep, but many are only available directly, GDC virtual conference is a very small percentage of talks scheduled at GDC. GDC normally has 100s of talks, I think the virtual conference has 43. |
|
|
Chris Maughan
2020-03-17 12:10 #
FWIW, You can see lots of the GDC talks on twitch at the moment; they are live streaming the conference. |
|
|
Scott Anderson
2020-03-17 11:36 #
Our Machinery posted about their approach to UI and tools in their new engine (https://ourmachinery.com/writing-tools-faster.html), it was meant to be a GDC presentation but... coronavirus |
| 5 comments | |
|
|
Edward de Jong
2020-03-16 11:47 #
The independent hodgepodge of isolated apps allows function to evolve without breaking other products. The problem with jack of all trades apps like Framework and others was that it is hard to satisfy particular markets with one generic product without bloat. Some people decry variety, but variety is necessary to satisfy all the different needs. Dynabook was a fantasy born of some theory that a single structure would be generally useful. Apple created the Applescript (now called Automator) that allowed you to use Apple Events and communicate between applications. Some older apps were entirely scriptable, but nowadays hardly anyone uses it. There just isn't that much cross communication between apps that makes sense. After all, each project has its own data structures which is really what isolates them; many programs don't agree on how to store numbers, which is a rather major problem if you are talking about intra-program communication. |
| 13 comments | |
|
|
Jared Windover
2020-03-16 10:02 #
Just read Alan Kay and Adele Goldberg’s Personal Dynamic Media: http://www.newmediareader.com/book_samples/nmr-26-kay.pdf This line really stood out to me: > (If) the projected audience is to be “everyone,” is it possible to make the Dynabook generally useful, or will it collapse under the weight of trying to be too many different tools for too many people? The total range of possible users is so great that any attempt to specifically anticipate their needs in the design of the Dynabook would end in a disastrous feature-laden hodgepodge which would not be really suitable for anyone. I feel like what we got (modern desktop environments) neither collapsed under their own weight, nor became feature-laden hodgepodges, but we get most of our features and functionality from an arguable hodgepodge of independent isolated apps. |
| 2 comments | |
|
|
Kartik Agaram
2020-03-16 00:23 #
Everything about my project, in one place: http://akkartik.name/akkartik-convivial-20200315.pdf (pdf; 25 pages) (Well, two places. This paper and the repo at https://github.com/akkartik/mu should subsume any previous writings.) > Bicycles for the mind have to be see-through > > This paper describes ongoing research on building software to be comprehensible to its users so that they can tailor it to their needs in the field. Our test-bed is a computing stack called Mu that deemphasizes a clean interface in favor of a few global implementation properties: small implementation size, few distinct notations, parsimonious dependencies, a simple dependency graph that avoids cycles, and early warning on breaking changes. Assuming a 32-bit x86 processor and (for now) a basic third-party Unix-like kernel, Mu builds up from raw machine code to a memory-safe but less expressive language than C. > > Our approach to keeping software comprehensible is to reduce information hiding and abstraction, and instead encourage curiosity about internals. Our hypothesis is that abstractions help insiders who understand a project but hinder newcomers who understand only that project's domain. Where recent efforts to create bicycles for the mind'' have tended to focus on reducing learning time and effort, we explore organizing the curriculum to be incrementally useful, providing an hour of actionable value for an hour (or three) of study. The hope is that rewarding curiosity will stimulate curiosity in a virtuous cycle, so that more people are motivated to study and reflect on the difference between good vs bad design and good vs bad architecture, even as the study takes place over a lifetime of specialization in other domains. Spreading expertise in design is essential to the creation of a better society of more empowered citizens. Software tools have a role to play in this process, both by exemplifying good design and by providing visceral illustrations of the consequences of design choices. I hope to eventually do a talk for https://2020.programming-conference.org/home/salon-2020, but since it's been postponed the paper I wrote has been burning a hole in my pocket. Many thanks to @Jonathan Edwards and the rest of the organizers for an inspiring theme this year. I didn't think anything would ever induce me to write an academic paper again. |
| 3 comments | |
|
|
Peter Abrahamsen
2020-03-14 20:08 #
But I wonder if https://gtoolkit.com would work for you? |
| 31 comments | |
|
|
Peter Abrahamsen
2020-03-14 20:07 #
It seems like pretty much everybody is working in a different environment? |
|
|
ikrima
2020-03-14 18:19 #
Hey everyone, as someone who's new to language oriented programming (e.g. language workbenches, projectional editors, etc), are there any commonly used libraries or tooling? For context, I'm trying to make a very simple projectional editor that has a 1-1 mapping between basic GLSL-esque language and a visual nodegraph representation. Normally I just reach for a handrolled parser & LLVM and lots of scaffolding/boilerplate making the visual editor. What I'm trying to do now is just make it be one editor |
| 45 comments | |
| # |
prax08
2020-03-14 00:15 #
Finally got some time to round up the prior art on a largely forgotten idea in computing called managed time. I think this in some ways is what version control does to files, but think of it at a more granular level of variables and functions and the kinds of interactions that will spawn off. Got the hint initially from Alan Kay’s writings and I think there is a lot of fertile areas here to dig into here: https://prabros.com/readings-on-time Would love to hear your feedback if I have missed some related material in this post. |
| 20 comments | |
|
|
Shalabh
2020-03-13 22:14 #
https://medium.com/s/story/lets-pretend-this-never-happened-8abf0bc9648c |
| 3 comments | |
|
|
Peter Abrahamsen
2020-03-13 16:05 #
Mel Conway today, reiterating some familiar ideas, grounded in a particular historical account of what makes technologies democratic: https://twitter.com/conways_law/status/1238539198203822081 |
| 1 comments | |
|
|
Robin Allison
2020-03-12 16:33 #
In Alan Kay's talk "The Real Computer Revolution Hasn't Happened Yet" (https://www.youtube.com/watch?v=oKg1hTOQXoY) he mentions that he wrote a rebuttal to a paper of Dijkstra's called "On the fact that most of the software in the world is written on one side of the Atlantic" (7:00) and said "It was basically about that, computers form a new kind of math. You can't judge them. They don't really fit well into classical math". I'm really curious what he meant by this new kind of math, but I can't find the paper anywhere. Does anyone know where it is, or where he elaborates on that specific idea? |
| 4 comments | |
|
|
Mariano Guerra
2020-03-12 14:57 #
https://people.csail.mit.edu/ebakke/sieuferd/ > SIEUFERD is a general-purpose user interface for relational databases. It takes its inspiration from two decades' worth of graphical database applications that were developed, at great expense, to serve niche markets such as seafood trading, music school administration, and refugee camp management, and attempts to generalize their standard UI idioms into a single, universal application that provides most of their features in a schema-independent manner. The proof that this can be done lies in existing general-purpose "killer apps" such as Excel and Tableau; the challenge lies in achieving the same for the generalized relational database use case (think CRUD over data modeled by entity-relationship diagrams). |
|
|
Will Crichton
2020-03-12 13:17 #
Also, I appreciated this polemic: > One manifestation today (and then) is to take a likely good principle -- functional relationships can be powerful and understandable -- and then mess it up by wanting to use “old math function ideas” in the new domain in which both passage and time and the memory of state are both critical elements. This is the critical flaw in today’s “functional programming” enthusiasts. (ง •̀_•́)ง them’s fightin’ words |
| 5 comments | |
|
|
Will Crichton
2020-03-12 13:14 #
To Alan’s point, one big change within the next 10 years will be how easy it is to make custom hardware. For example, you can specify the PDP-8 processor in ~200 lines of Python: https://github.com/cdonovick/peak/blob/master/examples/pdp8/sim.py Then you can use a toolchain to compile this into Verilog, synthesize it onto an FPGA. Bam, you have your own customizable CPU. |
|
|
Will Crichton
2020-03-12 12:51 #
I’ve been trading emails with Alan Kay for a few days about CS education. Wanted to share a few thought-provoking snippets with y’all: > In my research group at Parc in the decade of the 70s, we did four major “real object” languages, about three more major designs, and many versions. This is because “what was actually needed” was not a variation on any of the several thousand languages that Jean Samet was able to count by the late 60s. Other research groups at Parc accounted for another 4 or 5 higher level languages and SDKs as well. > > Part of the mental tool set for being a “aspirational computer scientist” back then was to know how to make OSs, languages, and new whole computers in a timely fashion. Today it is much easier than back then, but most computer people don’t know how, and don’t. > > What seems to be lacking is what we used in order to get most of “personal computing” into an Alto in the 70s in about 10,000 lines of code including the OS with all but a few thousand instructions written in the super high level language -- and all done by less than 10 people (who also had to invent the personal computing ideas and GUI, etc). The secret sauce was a kind of mathematics and design that seems quite missing today combined with an integrated live programming language, live development environment, and hardware all built to support the math and design. > > For “CS” learning purposes, just bootstrapping a neat system done by others is probably not the best first experience. But this is an indication that a very large “personal computing experience” can indeed be programmed in a few thousand lines of code via what really counts in computing: Design not bricklaying or “Runnable Math* > > A separate “real CS” department -- maybe it should be called “The Systems Sciences Department” for clarity -- would address all these deeper issues. |
| 32 comments | |
|
|
Roben Kleene
2020-03-12 12:21 #
Webpack's Hot Module Replacement is exactly the type of solution that the "Worse is Better" story tells us to avoid. True or false? Why? Why not? http://dreamsongs.com/RiseOfWorseIsBetter.html |
| 26 comments | |
|
|
Pezo - Zoltan Peto
2020-03-12 09:24 #
Hi! There are so many smart tech people here, so this is why I dare posting the following: I am from the EU and pretty scared about the coronavirus. Can you please up this post? https://news.ycombinator.com/edit?id=22558188 Take care. |
| 2 comments | |
|
|
Mariano Guerra
2020-03-12 02:44 #
If you wanted to share some medium sized ideas with this group specifically, where would you put them? I could write them in my blog, but for FoC would sound like "subtweeting" and for outsiders it would sound out of context (because I would assume a lot of shared context of things that here are shared but outside they are not) |
| 5 comments | |
|
|
Mariano Guerra
2020-03-11 13:47 #
https://chartio.com/blog/why-we-made-sql-visual-and-how-we-finally-did-it/ |
| 12 comments | |
|
|
Mariano Guerra
2020-03-11 03:38 #
https://medium.com/feenk/code-comments-as-live-wikis-in-ides-1c7b593749f5 |
|
|
Edward de Jong
2020-03-10 17:22 #
This is a made up example. There are no watchmakers in history called Hora or Tempus (Hora means time in Spanish, and Tempus means time in latin). People just make up stuff. |
| 18 comments | |
| # |
Daniel Garcia
2020-03-10 16:19 #
From the Architecture of Complexity (https://www.cc.gatech.edu/classes/AY2013/cs7601_spring/paper…). I feel like this so much every time I'm coding, debugging and there's a distraction :joy: |
|
|
Max Krieger
2020-03-10 14:11 #
Anyone have resources on the design and (web/react) implementation of inspector suites? Inspectors like chrome/ff devtools, redux inspector, react inspector, flutter inspector, jetbrains plugins... |
| 6 comments | |
|
|
Deepak Karki
2020-03-09 09:06 #
https://cseweb.ucsd.edu/~lerner/proj-boxes.html > Live programming is a regime in which the programming environment provides continual feedback, most often in the form of runtime values. In this project, we explore Projection Boxes, a novel visualization technique for displaying runtime values of programs. The key idea behind projection boxes is to start with a full semantics of the program, and then use projec- tions to pick a subset of the semantics to display. By varying the projection used, projection boxes can encode both previ- ously known visualization techniques, and also new ones. As such, projection boxes provide an expressive and configurable framework for displaying runtime information. Through a user study we have already demonstrated that (1) users find projection boxes and their configurability useful (2) users are not distracted by the always-on visualization (3) a key driving force behind the need for a configurable visualization for live programming lies with the wide variation in programmer preferences. |
| 3 comments | |
|
|
Mariano Guerra
2020-03-09 03:52 #
https://twitter.com/LostInTangent/status/1236672803123814400 The level of experimentation around VS Code is really interesting, I haven't seen that in other IDEs like eclipse. Lowering the barrier to experimentation seems to pay off :slightly_smiling_face: |
| 23 comments | |
|
|
Will Crichton
2020-03-07 14:14 #
(And as someone who learned to code in Garry’s Mod, it’s cool to see people get interested in using virtual worlds to teach programming!) |
| 26 comments | |
|
|
Will Crichton
2020-03-07 14:13 #
I saw a presentation from the CEO of Roblox the other day. He had a pretty strong long-term vision for the platform as a combination of Steam (game platform + social network), Unity (game engine + dev tools), and Second Life (customizable avatar, connected game worlds). Some interesting notes: • 65% of 9-12 y/o in the US play Roblox (as monthly active users). They have a comparable audience size to Minecraft. • 40% of players are female. It use to be 95/5 male/female 10 years ago. • They paid $100 million last year to creators on the platform. I hadn’t realized how staggeringly big the platform is, and influential with children. Just something worth thinking about if you’re trying to build for the next generation! |
| 3 comments | |
|
|
Kartik Agaram
2020-03-07 11:23 #
This is amazing: https://www.robinsloan.com/notes/home-cooked-app "It feels like during the last ~30 years food & cooking have become culture in a way more similar to music (food is the new rock!) Are we in the early stages of seeing millions of folks start to make their own software?" (https://twitter.com/noahchestnut/status/1231982830827139072) |
| 4 comments | |
|
|
Ivan Reese
2020-03-06 23:22 #
https://youtube.com/watch?v=c6SUOeAqOjU |
| 35 comments | |
|
|
Jared Windover
2020-03-06 08:27 #
Small UI thing I came across: https://blog.repl.it/clui > One of the unique parts about CLUI is that any new UI is automatically generated from the data you give it. |
| 5 comments | |
|
|
Kartik Agaram
2020-03-05 07:53 #
I've often wondered, "GUI, huh, what is it good for?" This post provides a compelling answer (i.e not images/video): https://arcan-fe.com/2020/02/10/leveraging-the-display-serve… |
|
|
Ivan Reese
2020-03-04 21:13 #
We are adopting a code of conduct. I shared a draft in #administrivia last month and received a ton of helpful feedback — thank you again to everyone who participated in that. I'm sharing the revised draft here in #thinking-together so that folks who don't follow #administrivia have a chance to offer feedback before this becomes official. Here's the current draft: https://github.com/futureofcoding/code-of-conduct If you take the time to scan or read through it and make suggestions, thank you in advance! |
| 13 comments | |
|
|
Steve Peak
2020-03-04 06:51 #
In #in-new-york May 5th? Join 6 other members sharing stories and good times downtown NYC. |
|
|
Mike Travers
2020-03-03 19:23 #
https://www.shift-society.org/hapop5/ |
|
|
Martin Sosic
2020-03-03 09:50 #
I just learned about the FoC spreadsheet with list of interesting projects, it is great! Since brother and I are also working on a language (https://wasp-lang.dev), I wanted to ask: what are the requirements to put it there, on the list? Thanks! |
| 7 comments | |
|
|
Deepak Karki
2020-03-02 20:46 #
https://www.knowledgefutures.org/ The Knowledge Futures Group builds technology for the production, curation, and preservation of knowledge in service of the public good. Two projects of theirs that I found really interesting - • PubPub - PubPub is an open authoring and publishing platform. It socializes the process of knowledge creation by integrating conversation, annotation, and versioning into short and long-form digital publication. • Underlay - The Underlay is a free and open source system for structuring, storing, and aggregating open, distributed knowledge. |
| 4 comments | |
|
|
Ernest Lee
2020-03-02 11:43 #
hm I’ll move the post |
|
|
Chris Granger
2020-03-02 09:22 #
I'm curious what this community would point to as well: https://twitter.com/ibdknox/status/1234519481617006592 |
| 5 comments | |
|
|
Andreas S.
2020-03-02 03:21 #
only when we have created tools ( programming languages??) that become a nice medium of play. Artistic cleverness and unexpected and unbounded creativity (see minecraft) will start to emerge. |
| 4 comments | |
|
|
Andreas S.
2020-03-02 03:20 #
I think or rather feel its still not enough |
|
|
Mariano Guerra
2020-03-02 00:39 #
I already have @Sol Bekic @Shalabh and @Geoffrey Litt pages, anyone else that would like to provide links for future references please do so! |
|
|
Mariano Guerra
2020-03-02 00:39 #
@Deepak Karki @Will Crichton @Scott Anderson @Charlie Roberts hi!, since you are frequent contributors to the community and end up in the newsletter it would be nice if your names could link to a page of your choice, like twitter or your personal page, if you would like that please send me a DM with your preferred link and I will try to link to it on your future contributions. thanks! |
|
|
Deepak Karki
2020-03-02 00:27 #
http://web.eecs.utk.edu/~azh/blog/guidehciseresearch.html Quick start guide to research on human factors of software engineering > This guide is meant to help new graduate students get a short introduction to research at the intersection of human-computer interaction (HCI) and software engineering (SE). By reading the materials listed below, you will get a small taste of the field. |
|
|
Edward de Jong
2020-03-01 23:00 #
one of the developers is a regular member of this group. |
| 2 comments | |
|
|
Deepak Karki
2020-03-01 22:38 #
https://storyscript.com/ > Magical coding notebook for tomorrow’s developer. > Google Docs, Excel, Zapier and a data science notebook > combined in the first business-logic notebook. Seems interesting, has this been discussed here before? |
| 2 comments | |
|
|
Shalabh
2020-03-01 21:44 #
http://cseweb.ucsd.edu/~lerner/proj-boxes.html > In this project, we explore Projection Boxes, a novel visualization technique for displaying runtime values of programs. h/t https://twitter.com/disconcision/status/1234208250716991491 |
|
|
Ivan Reese
2020-03-01 08:27 #
Future of Coding • Episode 45 Orca, with Devine Lu Linvega https://futureofcoding.org/episodes/045 > Orca is typically encountered as an inky black and seafoam green alphabet soup, pulsating to some species of broody electronic industrial throb. But it is also a forgiving learning environment that doesn’t crash, puts code and data together in the same space, lets you directly manipulate code and data interchangeably, allows generous recovery from mistakes, and supports discovery through freeform play. This is one of those "a very special episode" sort of things where.. it's going to be a bit different from the episodes I make for the forseeable future. Hope you enjoy it! |
| 4 comments | |
| # |
Srini K
2020-02-28 11:42 #
this hit the feels: Screenshot 2020-02-28 14.41.47 |
|
|
Srini K
2020-02-28 11:42 #
https://news.ycombinator.com/item?id=22431500 oh boy this thread |
|
|
Will Crichton
2020-02-28 10:16 #
Has anyone played Dreams? Seems interesting to view as a commercial end-user programming system. https://www.youtube.com/watch?v=2ltgkcoQzow |
| 3 comments | |
|
|
Shalabh
2020-02-27 23:28 #
http://www.physicsofsoftware.com/ "This work is about a possible theory of forces in software, and how it can inform the way we design, the way we talk about design, and the way we think about design." Some interesting philosophizing - discussion about software as a material and the true nature of software. |
| 3 comments | |
|
|
Shalabh
2020-02-27 10:23 #
https://gist.github.com/luque/97235d8cf7d36cce02f47e24af441493 > the reality is that a usual software project stack involves an increasingly larger number of programming languages, DSLs, frameworks, systems, tools, techniques and processes, so it is a fact that the accidental complexity in our day-to-day software projects is increasing to unbearable levels. > We plan to build a new breed of dynamic and fully conceptual modeling environment in order to enable programmers to work through every development stage --analysis, specification, design, implementation, deployment, evolution, etc.-- at the conceptual level and explore their dynamic models as a thinking and learning tool. h/t https://twitter.com/rafael_luque/status/1232703579208765440 |
| 1 comments | |
|
|
Deepak Karki
2020-02-27 09:19 #
https://github.com/hediet/vscode-debug-visualizer/tree/master/extension > A VS Code extension for visualizing data structures while debugging. Works best with JavaScript/TypeScript. Also tested with C#, Java and PHP. Works with any language that you can debug in VS Code. |
|
|
Josh Cho
2020-02-25 21:36 #
Are there any languages that make fluid use of linguistic context, as in overloading variables/symbols, type-specific sub-languages/operations/functions? I brainstorm here just because variable names tend to get long and complicated in any language, making thought too verbose. For instance, ‘Maybe Int = Just Int | Nothing’ seems incredibly verbose for something that gets passed around a lot in Haskell. So if there is anything that makes variables/function names/types easier within specific contexts —at the cost of readability but making experimentation easy — that would be greatly appreciated |
| 3 comments | |
|
|
William Taysom
2020-02-25 01:10 #
For Haskell, I like https://www.willamette.edu/~fruehr/haskell/evolution.html and https://www.willamette.edu/~fruehr/haskell/seuss.html. |
|
|
William Taysom
2020-02-25 01:10 #
Ruby quote time... Ruby is designed to be human-oriented. It reduces the burden of programming. It tries to push jobs back to machines. You can accomplish more tasks with less work, in smaller yet readable code. (Matz) Ruby is a very free-form community. Matz is the most benevolent dictator I've had the pleasure to work with, and most of the community are true free-thinking artists. It's like the hippie commune of the language world. (Charles Nutter) Ruby seems so self-explanatory to me. It makes it almost boring; you try to focus on Ruby and you wind up talking about some problem domain instead of the language. (Steve Yegge) |
| 4 comments | |
|
|
Mariano Guerra
2020-02-25 00:44 #
what's your language/tool zen? |
|
|
Mariano Guerra
2020-02-25 00:44 #
Have you read the python zen? >>> import this |
| 3 comments | |
|
|
Deepak Karki
2020-02-24 20:23 #
https://kaleguy.github.io/leovue > Leo is a uniquely powerful and versatile outlining editor. It is open source and runs on Windows/Mac/Linux. More about Leo. > Leo allows you to create content items and display them in multiple hierarchies. > LeoVue is a web app created with the Vue.js framework. Use LeoVue to create complex sites from Leo outlines. Add Vue components to content items. Assemble content items into multiple views and pages. Load sites and data into nodes. |
| 1 comments | |
|
|
Shalabh
2020-02-24 09:53 #
Has anyone looked into Ballerina? https://ballerina.io/ > Whenever possible, Ballerina prioritizes programmer convenience & productivity with familiarity, clearer abstractions, and easier concepts over uber system performance. > In Ballerina, every program is a sequence diagram that illustrates distributed and concurrent interactions automatically. The diagram is the code. The code is the diagram. |
| 5 comments | |
|
|
Mariano Guerra
2020-02-24 07:41 #
https://twitter.com/geoffreylitt/status/1231962052727582726 |
|
|
Mariano Guerra
2020-02-24 04:55 #
The 10th Future of Coding Newsletter is out, subscribe to make the 11th be the first one to pass 200 subscribers! https://tinyletter.com/marianoguerra/letters/future-of-codin… |
|
|
Deepak Karki
2020-02-23 22:27 #
https://dl.acm.org/ccs ACMs hierarchical topic classification system! Helped me learn of topics I didn’t know about and find papers similar to the ones I found interesting. PS. change the view to “flat view” for better information density :slightly_smiling_face: |
|
|
Prathyush
2020-02-23 14:11 #
Really loved the multicursor/evaluators idea in this one. Check out project here: https://github.com/batman-nair/IRCIS And here's FizzBuzz visualization in this programming language: https://batman-nair.github.io/IRCIS/samples/fizzbuzz.html |
| 4 comments | |
|
|
Christopher Galtenberg
2020-02-23 07:44 #
https://github.com/pel-daniel/mind-bicycles |
| 6 comments | |
|
|
Edward de Jong
2020-02-21 16:43 #
I can see a lot of applications for this kind of domain specific language that is built on top of Markdown. As long as you can live with its limitations, it should be productive for many people. |
| 2 comments | |
|
|
Alex Ellis
2020-02-21 14:38 #
has anyone here played with idyll (https://idyll-lang.org/)? I’m just starting to explore it. reminds me a bit of pollen (https://docs.racket-lang.org/pollen/), too |
| 2 comments | |
|
|
Gregg Tavares
2020-02-21 04:55 #
I was re-watching this talk https://www.youtube.com/watch?v=g1ib43q3uXQ it has some possibly important points for this crowd. It arguably says Logo was bad, Seymour Papert was wrong, how the majorty believe programming should be taught (letting kids be self motivated and explore) is not supported by the evidence. It sights this paper http://mrbartonmaths.com/resourcesnew/8.%20Research/Explicit… |
| 9 comments | |
|
|
Deepak Karki
2020-02-20 01:54 #
http://staging.dubberly.com/Data_Authoring_Environments/ |
|
|
Daniel Garcia
2020-02-19 18:38 #
@William Taysom shared a really cool talk awhile ago https://www.youtube.com/watch?v=QbTf2nE3Lbw. I search what the speaker (Tom Mitchell) is currently doing and I found he is working on Machine Learning for end user programming :smile: https://www.youtube.com/watch?v=NXD0aE8w27g |
|
|
Shalabh
2020-02-19 17:06 #
http://blog.rfox.eu/en/Programmer_s_critique_of_missing_structure_of_oper.html |
| 1 comments | |
|
|
Christopher Galtenberg
2020-02-19 09:26 #
https://paper.dropbox.com/doc/Stamper-An-Artboard-Oriented-C… |
|
|
Christopher Galtenberg
2020-02-19 09:25 #
Nice @Cameron Burgess! :raised_hands: |
|
|
Christopher Galtenberg
2020-02-19 09:23 #
https://twitter.com/supercgeek/status/1230163240815955968 |
| 8 comments | |
|
|
Srini K
2020-02-19 08:34 #
so glad more people are bringing points like this up: https://threadreaderapp.com/thread/927593460642615296.html |
| 42 comments | |
|
|
Stefan Lesser
2020-02-19 03:20 #
In the quest for building composable components and managing complexity, monoids are an important pattern to familiarize yourself with. Brandon Kase is currently writing a great article series about exactly that in a delightful “programmer first, mathematician second” kind of style: https://bkase.dev/posts/semigroups-and-monoids https://bkase.dev/posts/reducers-are-monoids > Semigroups and Monoids are the "20%" of algebraic objects that get you "80%" of the power. These are a functional programmer's basic building blocks: The ability to detect, digest, and discover them levels you up as an engineer! > > Since I want this post to be maximally relevant to the audiences I think I'll reach, I'm preparing all code examples in OCaml, ReasonML, Haskell, and Swift throughout this post. |
|
|
Chet Corcos
2020-02-19 00:15 #
I built a prototype yesterday for that demonstrates an architecture that I think is really powerful: https://github.com/ccorcos/datalog-prototype/ > A full-stack prototype of a collaborative web application backed by a Datalog-inspired database. Let me know what you guys think :slightly_smiling_face: |
| 29 comments | |
|
|
Deepak Karki
2020-02-18 08:56 #
http://hyperknowledge.org/ > We want to establish a Web of Knowledge. This allows to see how any idea is connected with other ideas in debates, through evidence, citations, influence, consequences, etc. > There have been, and still are many attempts to create such a Web of Knowledge, and rather than be one more such attempt on our own, we want to help unify the forces of knowledge workers, both individuals and organizations, into an interoperable mesh of knowledge where everyone can contribute. We also want to make it practical to develop knowledge applications that consume and expose knowledge on this mesh. > The protocol supports interoperability of knowledge at personal and organisational levels and federation of knowledge sources so that knowledge can be synthesised to augment our ability to learn, understand, to be understood, solve problems and achieve goals. |
|
|
Mariano Guerra
2020-02-17 01:49 #
hi! I was invited to replace a speaker at a conference next week because his visa was rejected :confused: and I proposed a talk called "Programming by any other name": An overview of alternative ways to express computation, from the formal definitions, going through alternative paradigms and reviewing some interesting existing programming languages. Just now I got a confirmation that I will present it and I need to fill the slides :stuck_out_tongue: in the thread I add an outline of what I have planned, but they asked me to make it more "tangible", so I need your help providing examples of existing tools and programming languages that use non mainstream programming paradigms |
| 32 comments | |
|
|
Mariano Guerra
2020-02-17 00:27 #
new little demo of end user software customization: - sort Hacker News by total points descending, for a more stable ranking - remove the articles I've already read https://twitter.com/geoffreylitt/status/1229251217118892032 |
|
|
Bill Seitz
2020-02-16 08:49 #
There are a couple interesting articles backlinked at http://webseitz.fluxent.com/wiki/Jupyter |
|
|
Christopher Galtenberg
2020-02-16 08:21 #
Looking through VPRI writings (http://vpri.org/writings.php) and just noticed a couple references to "Active Essays" — ala IPython/Jupyter and the universe of "programming while learning" environments — seems a useful term |
|
|
Daniel Garcia
2020-02-15 13:43 #
Seems like we have a bunch of features from this video but done in a very different way. A first one that comes to my mind is the walled gardens of having to open a file inside an application https://www.youtube.com/watch?v=9bjve67p33E |
|
|
Kartik Agaram
2020-02-15 09:10 #
I just registered for https://2020.programming-conference.org/home/salon-2020#event-overview. Anyone else going? (Edit: the papers are up.) |
| 3 comments | |
|
|
Will Crichton
2020-02-14 12:50 #
If anyone is interested in academic literature on programming & psychology, I’ve been accumulating a public bibliography on Zotero: https://www.zotero.org/groups/2295262/programmingcognition/library |
| 2 comments | |
|
|
Kartik Agaram
2020-02-13 21:56 #
Even though this is an esolang it seems surprisingly accessible. Perhaps all languages should generate an html visualization of their runs. https://github.com/batman-nair/IRCIS/blob/master/README.md |
| 4 comments | |
|
|
Steve Dekorte
2020-02-13 07:47 #
The F in FoC https://twitter.com/ryanflorence/status/1227629264259801088?s=20 |
| 14 comments | |
|
|
yoshiki
2020-02-12 23:41 #
Good highlights in the screenshot regarding the benefits of code-as-text we take for granted: https://twitter.com/gordonbrander/status/1191947925871628289?s=21 |
| 3 comments | |
|
|
Mariano Guerra
2020-02-12 02:23 #
All Programming Languages are Wrong: http://users.rcn.com/david-moon/Lunar/all_programming_languages_are_wrong.html |
| 18 comments | |
| # |
Mariano Guerra
2020-02-12 01:21 #
what do you think of this image in relation to the work on FoC? |
| 18 comments | |
|
|
Mariano Guerra
2020-02-11 13:46 #
in erlang you can turn distributed tracing per module, function or even function with a guard to match specific values on the arguments, then you can log them or ship them somewhere else. No extra stuff needed, always available at runtime. I fixed a really weird bug that I couldn't reproduce by tracing some functions in less than 15 minutes, directly in production |
| 6 comments | |
|
|
Edward de Jong
2020-02-11 11:57 #
@Deepak Karki the approach of Undo's time traveling debugging is to capture microscopic level of changes. This is a heavy process and would not be normally enabled for a customer running a graphical interactive program. So what would be more desirable is such a lightweight recording technology that it can be enabled at all times, and then if a problem occurs the recording can be transmitted and now you are in an era of 100% repeatable, fixable software. This is the approach i have used in Beads. But Undo is offering debugging for systems that were never designed for this, which is very clever. |
|
|
Deepak Karki
2020-02-11 06:53 #
> In this podcast, Daniel Bryant sat down with Greg Law, CTO at Undo. Topics discussed included: the challenges with debugging modern software systems, the need for “hyper-observability” and the benefit of being able to record and replay exact application execution; and the challenges with implementing the capture of nondeterministic system data in Undo’s LiveRecorder product for JVM-based languages that are Just-In-Time (JIT) compiled. |
|
|
Deepak Karki
2020-02-11 06:53 #
Greg Law on Debugging, Record & Replay of Data, and Hyper-Observability infoq.com/podcasts/debugging-record-replay-data |
| 2 comments | |
|
|
Kartik Agaram
2020-02-11 00:30 #
In an interesting case of threads merging, the creator of Behavioral Programming[1] recently wrote a paper on Statecharts[2]: https://arxiv.org/pdf/1911.10691.pdf [1] 1580955499.046800.html on #thinking-together [2] ../share-your-work/1581097755.051800.html on #share-your-work |
| 3 comments | |
|
|
Jason Laster
2020-02-10 14:59 #
but yeah, in all seriousness, i think all debugging starts by building a chronology of events and then proceeds to developing an intuition into the why and how |
|
|
Jason Laster
2020-02-10 14:58 #
@Kartik Agaram yes. Finally a debugging tool for folks who love both the Debugger and the Console |
|
|
Kartik Agaram
2020-02-10 14:56 #
Here's the video on logpoints: https://www.youtube.com/watch?v=0fCjDThbC_s via https://webreplay.io/features/time-travel-debugging.html Very cool indeed. A debugger that speaks to my debug-by-print biases. |
| 10 comments | |
|
|
Jason Laster
2020-02-10 12:50 #
CC @Irvin Hwang @William Taysom @Dan Cook @David Moon @Garth Goldwater @Peter Abrahamsen |
| 8 comments | |
|
|
Jason Laster
2020-02-10 12:49 #
CC @J. Ryan Stinnett @Thomas Ballinger @Ivan Reese |
| 2 comments | |
|
|
Jason Laster
2020-02-10 12:48 #
^--- would anyone like to join our private beta testing group? |
|
|
Jason Laster
2020-02-10 12:48 #
https://twitter.com/jasonlaster11/status/1226965515144482827 |
|
|
Paul Butler
2020-02-10 04:31 #
Is anyone aware of prior work on languages where: • the program can be modified in-place • variables can be re-bound (i.e. the program has a linear top-to-bottom flow) • updates are patched in so that changes do not cause unnecessary recomputation I have a demo of what I'm referring to here: https://twitter.com/paulgb/status/1226691281184808961 |
| 33 comments | |
|
|
Nick Smith
2020-02-06 14:21 #
Is anyone familiar with temporal logics and have seen/done any FoC projects using them? |
| 4 comments | |
|
|
Josh Cho
2020-02-05 18:18 #
What are people’s opinions on Behavioral Programming? https://youtu.be/cXuvCMG21Ss |
| 14 comments | |
|
|
Joseph Ivie
2020-02-05 08:37 #
https://www.reddit.com/r/ProgrammingLanguages/comments/ezaxx… A discussion I'm guessing people here would like to contribute to |
|
|
Eddy Parkinson
2020-02-04 18:28 #
@Geoffrey Litt this looks like you https://www.geoffreylitt.com/ I have been looking at the spreadsheet angle for while. Feel free to DM me for a chat. |
|
|
Mariano Guerra
2020-02-04 00:48 #
there's a #announcements channel |
|
|
molikto
2020-02-04 00:46 #
Is someone hiring here? Or should we have a job channel... |
|
|
Mariano Guerra
2020-02-04 00:43 #
https://www.loom.com/share/cab62c8172404c39bebc4c511a60a389 > I've been hacking on a little tool lately that's kinda relevant to this... At 3:10 in this demo video, I drag select multiple listings on a website, and bulk perform an action on them. How much time would be saved by "bulk _" anywhere on the web?? |
|
|
Ivan Reese
2020-02-03 17:41 #
Episode #44 — Making Your Own Tools: Devine Lu Linvega https://futureofcoding.org/episodes/044 |
| 14 comments | |
|
|
Ivan Reese
2020-02-03 12:39 #
> The Agaram Paradox: to get to better interfaces, expose your implementations. Discuss! |
| 6 comments | |
|
|
Ivan Reese
2020-02-03 09:38 #
Let's talk about the positive benefits of accidental / incidental complexity in this thread. |
| 63 comments | |
|
|
Kartik Agaram
2020-02-03 00:20 #
Great prompt by @Brandon Hudgeons a while ago: You get to name an assertion the _ Paradox (fill in your last name). What do you choose? (Responses in thread plz.) |
| 9 comments | |
|
|
S.M Mukarram Nainar
2020-02-02 20:06 #
https://arcan-fe.com/about/ Cool (quite old) demo here: https://www.youtube.com/watch?v=3O40cPUqLbU has anyone played with this? |
|
|
Shalabh
2020-02-02 17:23 #
https://djrobstep.com/posts/programs-are-a-prison > We often hear that Apple's ecosystem of apps (or Microsoft's, or Google's) are "walled gardens". But what about the individual applications themselves? |
| 7 comments | |
|
|
Konrad Hinsen
2020-02-02 09:21 #
An interesting Twitter thread on the preservation of digital art, including comment on how it hurts that digital artists can't fully manage the media they use: https://twitter.com/Polackio/status/1223303212775739392 |
| 30 comments | |
|
|
Daniel
2020-02-02 06:17 #
Spotted on HN “Anders Hejlsberg on Modern Compiler Construction “ https://channel9.msdn.com/Blogs/Seth-Juarez/Anders-Hejlsberg… |
|
|
Kartik Agaram
2020-02-01 14:56 #
@Ivan Reese I somehow only just saw https://twitter.com/spiralganglion/status/1145028588715950080. Had you posted it here at some point? I don't quite understand how the increment box has multiple input/output arrows. Is it just that there's only one increment operation in the world, or are the I/O pairs interacting somehow? |
| 9 comments | |
|
|
Joseph Ivie
2020-02-01 12:54 #
What kind of progress has been made in modelling IO in functional programming? I see it as a goal on https://futureofcoding.org/about. Is the current solution basically Rx? And has anyone taken the ideas of Rx and been able to fold them cleanly into a programming language rather than as a separate library? |
| 5 comments | |
|
|
Stefan Lesser
2020-01-31 06:28 #
In case it isn’t obvious after listening, I’d be delighted to listen to a follow-up with him specifically about the future of coding… @Ivan Reese |
| 8 comments | |
|
|
Stefan Lesser
2020-01-31 06:25 #
Jonathan Blow talking about his past, of course about games, but also about programming today, open source, C++, Rust, the future of programming, and many other issues people here will be interested in (and/or annoyed by his perspective ;-): https://oxide.computer/blog/on-the-metal-9-jonathan-blow/ |
| 22 comments | |
|
|
Ivan Reese
2020-01-30 10:33 #
For anyone who missed the first post — the first ever Future of Coding Community Survey is currently open. All questions are optional, all submissions are anonymous, the data collected will be used to set the roadmap for what I'll be working on for the community over the coming year. We've had about 90 responses so far and the data has been very helpful. Get your submission in soon, because we'll be opening this up to the wider community (Podcast, Newsletter, Twitter) this weekend. Thank you! https://forms.gle/cBzxD7CQyoQxNGyw8 |
| 2 comments | |
|
|
Deepak Karki
2020-01-29 22:25 #
https://webglfundamentals.org/webgl/lessons/resources/webgl-state-diagram.html > This is an attempt to give a visual representation of most of WebGL’s internal state. WebGL is really just an API to run shaders. The only functions that actually effect pixels are gl.clear, gl.drawArrays and gl.drawElements. That’s it! All other API calls just setup internal state for when those 3 functions are called. |
| 3 comments | |
|
|
Steve Dekorte
2020-01-29 20:52 #
Was looking for a high quality video of the Sketchpad demo and ran across this: https://www.youtube.com/watch?v=GPbVSHlHLAY |
| 3 comments | |
|
|
Ache
2020-01-29 20:17 #
https://www.createwithplay.com/ |
| 3 comments | |
|
|
Roben Kleene
2020-01-29 14:40 #
Interesting analysis of "Computational notebooks, such as Jupyter Notebooks, Azure Notebooks, and Databricks". These observations seem spot on to me, any theories about why these problems haven't been fixed yet? Or are they not problems at all? http://web.eecs.utk.edu/~azh/blog/notebookpainpoints.html |
| 19 comments | |
|
|
Josh Cho
2020-01-29 04:27 #
Is there an IDE that does something similar to what is in this demo? https://youtu.be/H58-n7uldoU I couldn’t find these features even in LightTable itself (seems they were originally planned but somehow lost/not documented) This sort of parallel view thing would be very helpful |
| 8 comments | |
|
|
Deepak Karki
2020-01-28 21:22 #
https://github.com/CCExtractor/vardbg A simple Python debugger and profiler that generates animated visualizations of program flow. It is meant to help with learning algorithms by allowing you to visualize what the algorithms are doing. |
| 9 comments | |
| # |
Shalabh
2020-01-28 11:58 #
I think this was posted before but is past search history: https://github.com/ChrisKnott/Algojammer Algojammer is an experimental, proof-of-concept code editor for writing algorithms in Python. Check out the timeline visualization of which lines are 'hit'. |
| 4 comments | |
|
|
Deepak Karki
2020-01-28 08:00 #
> Microsoft Application Inspector is a software source code analysis tool that helps identify and surface well-known features and other interesting characteristics of source code to aid in determining what the software is or what it does. |
|
|
Deepak Karki
2020-01-28 08:00 #
https://github.com/Microsoft/ApplicationInspector |
| # |
USLACKBOT
2020-01-28 07:49 #
This message was deleted. |
| 3 comments | |
|
|
Kartik Agaram
2020-01-27 21:46 #
I just realized that people here will enjoy this live RPN calculator: http://canonical.org/~kragen/sw/dev3/rpn-edit#2015_1975_-_36… |
| # |
Daniel Garcia
2020-01-27 19:42 #
I've been trying to learn more about architecture in order to steal ideas for building software. I found https://en.wikipedia.org/wiki/Shearing_layers really interesting. I think somebody already shared _How Buildings Learn_ , but I found that there's a TV series (available in Youtube https://www.youtube.com/watch?v=AvEqfg2sIH0). I watch only the first episode so far, but I found really interesting that even in architecture the maintenance of a building is considered a problem. Would love to hear ideas of what the below layers could mean to software |
| 3 comments | |
|
|
Edward de Jong
2020-01-27 18:53 #
I just came across this very nice lecture from mid 2019 from Ivan Daniluk, basically a survey of visual programming tools. I think it will be interesting to most of the members here. https://www.youtube.com/watch?v=Ps3mBPcjySE |
| 1 comments | |
|
|
Will Crichton
2020-01-27 12:05 #
Does anyone know about tools designed to help a programmer quickly understand the architecture of a system? Specifically tools that are automated, e.g. how Doxygen generates a class inheritance tree diagram. |
| 6 comments | |
|
|
Prathyush
2020-01-27 03:57 #
Hey guys, tried to collect a set of visual math tools in a repo here: https://github.com/prathyvsh/Visual-Math-Tools/ Can you guys give some feedback on what needs improvement and suggest names of some great tools in this domain that I might have missed? Also hoping that some of you find some of these useful/inspiring. |
| 12 comments | |
|
|
Duncan Cragg
2020-01-27 03:11 #
I just filled the survey in without ticking ML/AI, and now this turns up: https://ai.facebook.com/blog/using-neural-networks-to-solve-… :open_mouth: |
| 2 comments | |
|
|
Josh Cho
2020-01-26 21:15 #
I found this blog post on Stiegler (philosopher of technology) ranging from memory to technics very relevant to the milieu of tools our consciousness already lives in. https://www.3ammagazine.com/3am/stieglers-memory-tertiary-re… |
| 3 comments | |
|
|
Ivan Reese
2020-01-26 15:03 #
!everyone — I'd like to present to you the first ever Future of Coding Community Survey. Link below, supplemental notes in the following thread. :arrow_right: https://forms.gle/cBzxD7CQyoQxNGyw8 :arrow_left: Thank you for taking the time to fill it out, giving us helpful data for deciding what new things to do for the community in the coming year. |
| 27 comments | |
|
|
Roben Kleene
2020-01-25 12:01 #
There's a only a bit on programming here, but I think the appeal of this essay will still be broad with this group. What are some of the most promising directions right now for "transformative tools for thought"? Along the lines of these examples the authors gave: "Illustrator, Google Search, Twitter, Slack, Google Docs, programmer tools" https://numinous.productions/ttft/ |
| 17 comments | |
|
|
Deepak Karki
2020-01-25 09:30 #
Not sure if this has been shared here before, but found this interesting resource - GUI gallery guidebook. https://guidebookgallery.org/ Curated bunch of videos, books, GUIs, articles, etc. that explore the history and evolution of various kinds of user interfaces! |
| 1 comments | |
|
|
Edward de Jong
2020-01-24 19:25 #
VideoWorks's (1985) sequel, Macromedia director 3 (1993), must have been known to Brendan; they were very popular products., and I believe the FutureSplash animator had a language too. If someone bothered to track down these old products and study them, i am sure you would find elements there. The fantasy that Brendan created a new language from scratch in two weeks is myth. Programming languages exist in an evolution of concepts that inevitably go back to foundational designs, with relatively small amounts added each time. It is extremely rare to see a wholly new language like FORTH was. |
| 1 comments | |
|
|
Doug Moen
2020-01-24 16:09 #
> @magicmouse94937 "Javascript is way more directly related to Actionscript 2 and its predecessors than Self." The timing is wrong for this. Javascript was released in 1995. Actionscript 1.0 was released in 2000, the first version to support OOP, and it copied its object model (prototype based inheritance) from Javascript. Actionscript 2.0 was released 2003 and introduced class-based inheritance. Javascript was designed by Brendan Eich. The language was originally codenamed Mocha, later LiveScript, and the initial idea was "Scheme for the browser". However, Netscape had entered a partnership with Sun to include Java in the browser, and this led to a new requirement from management that LiveScript should be a companion to Java. So it was renamed Javascript and given a C-like syntax. Brendan Eich himself describes Javascript as "a quickie love-child of C and Self" (from his blog: https://brendaneich.com/2008/04/popularity/). Why was Javascript derived from Self? The designers of Self were now working for Sun, and the Sun/Netscape partnership may explain how Self became the direct ancestor of Javascript (I'm speculating on this point). Javascript could not use Self syntax, of course, due to the management requirement for a C-like syntax, hence the need to innovate and create a hybrid language. |
| 4 comments | |
|
|
Nick Smith
2020-01-24 02:17 #
Scope obviously has another utility: implementation hiding. I wonder if organising dependencies is just a side-effect of that use-case? |
| 6 comments | |
|
|
Nick Smith
2020-01-24 02:01 #
I want to avoid the idea of nested scope in my language, which means I need a good way to show data dependencies at a glance. Both fine-grained, as might be served by block scopes, and coarse-grained, as might be served by a module visualiser. |
|
|
Nick Smith
2020-01-24 01:59 #
A completely unrelated question: Every programming language has a notion of "dependencies" between data, e.g. the between the variables (or functions) of a program. Understanding this dependency graph is important: it helps you determine the flow of data through your program. Consequently, it's problematic if every value is accessible from everywhere. Programming languages usually solve this with a notion called scope. Scopes are typically nested. Scopes may take the form of "modules" or "blocks". It's my understanding that organising data into scopes is a mere approximation to expressing the true dependency graph of a program's data (which can be a DAG or a cyclic graph, not just a tree). It's easy to see the extent of a value hidden in a block, but it's not possible to show that a value is referenced in precisely two blocks. Similarly, it's easy to make values internal to a module, but PLs don't have a built-in way to visualise how the imports and exports of modules are interconnected (there are some external tools for visualising this). My question is: has anyone seen some good ways of representing data dependencies? Something better than a boxes-and-arrows visualisation? |
| 30 comments | |
|
|
Edward de Jong
2020-01-24 01:42 #
Ah, i found the original product that predates or at the least is at the same time as JS, it was called FutureSplash Animator (1993) https://weekly-geekly.github.io/articles/148212/index.html This was all owned by Macromedia at the time. Macromedia had Freehand (from Altsys), and Fontographer, and some other great products. Adobe bought all of these firms and unfortunately these tool pioneers are ignored. |
| 1 comments | |
|
|
Edward de Jong
2020-01-24 01:25 #
Well brendan should know. The pioneers of scripting languages don't get their proper credit. Before AS2 there was Lingo and before that there were some other projects that were around hypercard time that allowed people to do multimedia on PC's. VideoWorks's (1985) sequel, Macromedia director 3 (1993), was huge in its day; cost hundreds in a fancy box designed by Clement Mok, back when people spent big money on boxes. These early scripting languages predate Java and JS. They had triggering on mouse clicks. The CDROM business, Random House/Living Books, Myst, etc., created a whole industry of multimedia that forever changed what computers were considered capable of doing. Broderbund was a key company in this phase; they made kids/educational products, which drove the entire market. Desktop people were stuck in silent spreadsheets, but now you had animation, and stereo sound. It sold a ton of PC's. Millions of PC's were sold, just via Myst alone. It was a pre-rendered 3D game that ran on machines with no 3D hardware, and used to great effect the fog filters of Strata and had a great soundtrack. Because there was so much copying done between the early products, and because the companies were so unstable and getting absorbed it is hard to give proper credit. JS didn't come out until 1995 long after these multimedia scripting products which must have been known to the JS team at Netscape. Marc Canter and his team were really big pioneers, and i wish more people would acknowledge how instrumental these tools were in creating a software revolution http://lingoworkshop.com/articles/history |
|
|
Ryan
2020-01-24 01:03 #
@magicmouse94937 js copied java’s date stuff not actionscript. even ignoring that js came well before actionscript like @Chris Granger said, i know this because i complained about it once on twitter and brendan came into my mentions to tell me to blame java and not him lol |
|
|
William Taysom
2020-01-23 22:50 #
Coming back to the static/dynamic typing conversation of a few days ago (ephemerality thy name is Slack), what do yinz think of: static void m(String s) {
|
|
|
Steve Dekorte
2020-01-23 22:41 #
JS and Lua feel to me to be more related to Netwonscript which was inspired by Self, but maybe this is just convergent evolution. I agree with Edward that JS is far from an ideal high level language, but it has most of the high level features one might want to build on (besides coroutines) and feels cleaner (to me) than many others (Perl, Python, Ruby, Java). |
|
|
William Taysom
2020-01-23 21:51 #
"Given the process that created JavaScript and made it a de facto standard, we deserve something far worse." — Douglas Crockford "Lua is best described as a closed-development, open-source project. Lua is not developed in a collaborative way. ... Lua provides mechanism not policy. ... Instead of littering the language with lots of features, we provided ways for users to program the features themselves, in the way they wanted them, and only for those features they needed. ... Most successful languages are raised rather than designed. ... We include a new feature in Lua only when all three of us agree." — The Evolution of Lua |
|
|
Chris Granger
2020-01-23 21:48 #
JS predates ActionScript by 3 years.. |
|
|
Edward de Jong
2020-01-23 21:12 #
@Doug Moen Javascript is way more directly related to Actionscript 2 and its predecessors than Self. If you look at the libraries for AS2 you can see JS copied the weird quirk of the date function that months start with 0 for january. Javascript is #1 not because of merit, but because dictators like Steve Jobs issued an edict from on high that JS was the only interpreted language permitted in their all important IOS universe and in their browsers. I admit that the V8 engine is one of the marvels of the modern software world; an interpreted language that is within spitting distance of the speed of a highly optimized compiled language, but that doesn't change the fact that JS was hardly designed to be the main programming language for millions of programmers, and carry billions of lines of codes. Its module system is a bungled subset of AS3, and i won't bore you with the myriad other problems of JS. My favorite is that adding a string accidentally into an expression can cause type changes all the way up the call chain, wreaking havoc. Part of the poor quality of modern software can be traced to flabby languages like JS. I would not call Lua a derivative of Self. Lua was developed independently at the Catholic University in Rio, Brasil. I don't see anything in Self that survived, which is why i call it a dead end. It was yet another Xerox Parc project that never got commercialized properly. One can argue that Xerox had the worst ratio of ideas commercialized divided by ideas invented, basically near zero. They should make all tech managers watch some kind of training film showing the repeated stupidity of the managers who basically forced their employees to leave and start companies, many of which are way bigger than Xerox. (Xerox has market cap of 8 billion, Adobe 170 billion for example). |
|
|
Justin Blank
2020-01-23 14:08 #
I think it’s the ancestor of the technology in the Oracle/OpenJDK JVM (the Self VM lead to a VM for Strongtalk, which lead to HotSpot). I can’t talk about how it worked in Self, but today, the rough idea is that you have an interpreter and a compiler[0]. When you compile the code, you maintain a set of safepoints where the stack of the compiled code can be reliably mapped back into the state of the interpreter. Those safepoints tend to be at loop boundaries, or at points where the assumptions made by the JIT compiler might be invalidated. In between safepoints, the compiled code can’t be interrupted by the VM, and can’t be debugged through. But, when you set a breakpoint, it will revert to the interpreter when it reaches that point. (Btw: there are probably better people to describe this. I hope I haven’t made a mistake above). [0] in fact, you have two compilers: one fast and less thorough, one slower and more thorough. |
|
|
Nuno Leiria
2020-01-23 13:57 #
At some point in the video, he mentions that Self "unoptimized" the code for easier debugging. Does anyone have more details on how this happened and modern approaches to solve the same problem? It's a pain to debug optimized C crash dumps |
|
|
Doug Moen
2020-01-23 13:51 #
> Clearly this OOP/Message passing hybrid was a complete dead end. Not at all. Self introduced the idea of object oriented programming using prototypes and delegation, instead of classes, and it was highly influential. Prototype-based OOP was the basis for Javascript and Lua. Javascript is the world's most popular language, and Lua is also highly successful. The JIT compilation techniques and the generational garbage collector pioneered by Self are the basis for modern Javascript implementations. The 1987 Self paper by Dave Ungar and Randall Smith was selected as one of the three most influential OOPSLA papers presented between 1986 and 1996. |
|
|
Edward de Jong
2020-01-23 11:25 #
what a great old video. not many videos from this era; back then a camera was super expensive. you can imagine they had a team of 10 people work ing for 4 year, so that's 40 man years worth of work. Clearly this OOP/Message passing hybrid was a dead end. What they should have been testing, is taking people off the street, giving them a few hours of instruction, and seeing how far they got making something in this tool. They are so in love with features of their tool, i think they forgot that hammers are for other people to use for putting in nails. Not to fondle the hammer and marvel at its comfortable grip. |
|
|
Mariano Guerra
2020-01-23 07:16 #
https://www.youtube.com/watch?v=Ox5P7QyL774 |
|
|
nicolas decoster
2020-01-23 06:40 #
Very interesting blog post about offline first collaborative editing of tree structures, as it is done at Figma. https://www.figma.com/blog/how-figmas-multiplayer-technology-works/ |
| 7 comments | |
|
|
Mariano Guerra
2020-01-23 01:12 #
https://twobithistory.org/2018/05/27/semantic-web.html The web we have today is slowly becoming a glorified app store, just the easiest way among many to download software that communicates with distant servers using closed protocols and schemas, making it functionally identical to the software ecosystem that existed before the web. How did we get here? If the effort to build a Semantic Web had succeeded, would the web have looked different today? Or have there been so many forces working against a decentralized web for so long that the Semantic Web was always going to be stillborn? |
| 11 comments | |
|
|
Steve Dekorte
2020-01-22 17:11 #
Thought folks here would appreciate this post: https://twitter.com/dustyweb/status/1220127203649822725?s=20 |
| 1 comments | |
|
|
Shalabh
2020-01-21 14:16 #
Not finished yet but enjoying this: https://www.youtube.com/watch?v=JQCJCTgzCFo. So far it's about what computers are, how they related to the real world and the false emphasis on software as 'mathematics' when it there is a lot of non maths. Talks about shortcomings in current programming languages too. |
| 15 comments | |
|
|
George Campbell
2020-01-21 13:07 #
A trend in CAD has been a move to parametric design. I was wondering software design would trend the same way. What do you think? |
| 15 comments | |
|
|
Mariano Guerra
2020-01-21 01:18 #
My belief is that the way to start out in a research career is by working primarily on small and relatively tractable problems, where you have a good chance of success. You then continue the process of self-development, gradually working up to more important problems (which also tend to be more difficult, although, as noted above, difficulty is most emphatically not the same as importance). The rare exception is important problems that are also likely to be technically easy; if you're lucky you may find such a problem early in your career, or be handed one. If so, solve it quickly! |
| 1 comments | |
|
|
Stefan Lesser
2020-01-20 13:37 #
The linked essay from Michael Nielsen has some good tips on conducting research: https://twitter.com/pgbovine/status/1219330386242588678 |
|
|
Stefan Lesser
2020-01-20 13:35 #
Time to put another log into that dynamic vs. static typing fire… :fire: https://lexi-lambda.github.io/blog/2020/01/19/no-dynamic-typ… |
| 16 comments | |
|
|
Mariano Guerra
2020-01-20 05:25 #
http://web.eecs.utk.edu/~azh/blog/notebookpainpoints.html |
| 2 comments | |
|
|
Prathyush
2020-01-20 04:10 #
Hey guys, think this one hasn't been shared here yet. Fabrik is a fabulous visual programming environment by Dan Ingalls from the 1980s which allows you to create UI components directly inside the programming environment: http://sp.cmc.msu.ru/courses/smalltalk/fabrik/Fabrik.html Originally I shared this as a tweet and it has a bit more context on how I think programming has close links with analysis (as is being worked on by Conal Elliot and Dana Scott): https://twitter.com/prathyvsh/status/1190222195579994113 |
|
|
Mariano Guerra
2020-01-20 01:06 #
The 5th Future of Coding Newsletter is out! Check it here: https://tinyletter.com/marianoguerra/letters/future-of-codin… Subscribe here: https://tinyletter.com/marianoguerra/ Help me here: https://github.com/marianoguerra/future-of-coding-weekly#future-of-coding-weekly |
| 14 comments | |
|
|
Zubair Quraishi
2020-01-19 07:59 #
@Wouter van Oortmerssen That is not entirely true. I invested in Light Table/Eve when it was totally uncool! |
| 6 comments | |
|
|
Ivan Reese
2020-01-18 13:19 #
http://worrydream.com/refs/ (Via HN, https://news.ycombinator.com/item?id=22084137) Didn't realize that Bret had directory listings enabled on his server, but it makes sense given other "open for people to view and tinker" things he's done. (My favourite: all his javascript is unminified so you can see how he implemented the dynamic examples in his essays.) |
| 2 comments | |
|
|
Will Crichton
2020-01-18 12:44 #
Also curious more generally if there are any education-focused people here? Feels like the zeitgeist is around tool-building (languages, IDEs, etc.), but less so on how to teach people the tools. |
| 7 comments | |
|
|
Will Crichton
2020-01-18 11:39 #
Another space to look at is EdTech. Many programming platforms for education are trying to be no-code-esque. I saw a talk from PolyUp (https://www.polyup.com/) where the founder repeatedly emphasized “students don’t write code, they write MATH!” |
| 1 comments | |
|
|
Wouter van Oortmerssen
2020-01-18 09:38 #
it's a self-perpetuating cycle: VCs are sheep that want to all invest in the same kind of company at any one time, and a large segment of the startup scene chases money harder than it does innovation |
|
|
Mariano Guerra
2020-01-18 08:54 #
you are maintream now :eyes: |
|
|
Mariano Guerra
2020-01-18 08:53 #
As we discussed earlier, the secret is now out: from Airtable to UIPath to Retool, the new darlings of "NoCode" have caught the attention of young founders who want to build empires. The scene has become popular, and commensurate with that the quality has gone down. As of today (January 2019), we see a half dozen pitches a week for automation software. Most lack deep insights on the market. They just want to join the party. |
| 3 comments | |
|
|
noahtren
2020-01-17 21:09 #
What would you call a visual tool or widget that generates code based on how you interact with it? Kind of like a midpoint between code and nocode in my mind. Here's a great example: https://twitter.com/Raathigesh/status/1133357919427223553?s=19 |
| 12 comments | |
|
|
yoshiki
2020-01-17 20:10 #
A lot of the demos I see for novel programming environments run on laptops, which all programmers own. But most people right now are on smartphones or tablets, which are severely underpowered from a programmability perspective. This makes me think that the potential impact for these kinds of projects is actually much bigger on smartphones than on laptops(I concede that on the scale of decades though, these hardware trends may be less meaningful). So I’m curious if anyone here is working on programming for smartphones or tablets, and what your thoughts are on the limitations and potential there. |
| 36 comments | |
|
|
Wouter van Oortmerssen
2020-01-17 14:55 #
@Ben Wheeler do you work with Christopher Willis-Ford ? |
| 6 comments | |
|
|
Ben Wheeler
2020-01-17 14:31 #
Hi all, I’m Ben Wheeler. I work at Scratch as a developer and educator. Excited to hear what this community is up to! |
| 21 comments | |
|
|
Srini Kadamati
2020-01-17 07:55 #
This looks neat: https://github.com/microsoft/verona From Microsoft Research |
| 1 comments | |
|
|
Johny Fia
2020-01-16 22:36 #
:wave: I’m here! What’d I miss? |
| 1 comments | |
|
|
Steve Dekorte
2020-01-16 14:12 #
On “missing” values, null and undefined aren’t the same as an empty string. For example, if there’s an object for a person’s name that has a middle name field, does empty string mean 1) “we know that this person has no middle name”, 2) “we don’t know” or 3) we haven’t yet been asked or tried to input this”? Another example is when you want an undefined attribute to inherit from some delegate. Empty string can’t serve this purpose because it may mean “we know this value is an empty string” instead of “we want this value to be inherited”. |
| 27 comments | |
|
|
Duncan Cragg
2020-01-16 14:03 #
I've been reading back over @Jonathan Edwards’s Tweets and realise that he's not copying them all over to here. Which is a shame as they're often very challenging, and challenge at the heart of what we're up to in this community. So I may start to do that for him.. Here are some of my favourite brain-/belief-aches from Jonathan recently: https://twitter.com/jonathoda/status/1138881930399703041 https://twitter.com/jonathoda/status/1191324879708151814 https://twitter.com/jonathoda/status/1196533258315538435 https://twitter.com/jonathoda/status/1203011336197869569 https://twitter.com/jonathoda/status/1214598004625285121 https://twitter.com/jonathoda/status/1215628334475939845 https://twitter.com/jonathoda/status/1215655362986160130 https://twitter.com/jonathoda/status/1217884632009576448 |
| 5 comments | |
|
|
Ivan Reese
2020-01-16 12:27 #
Cross-post from #linking-together because I believe it to be on-topic for FoC. The slack message has a good discussion thread going, too — don't miss that. ../linking-together/1579153117.205300.html |
|
|
Stefan Lesser
2020-01-16 08:29 #
Visual Calculations in the Shape Machine > What does it mean to have a new modeling software for design that allows scientists, engineers and designers to specify their actions by drawing shapes rather than by writing scripts? What is the difference between a shape you see and the way it is currently recorded in the database of your computer? What does it mean to program with shapes? https://shape.design.gatech.edu/Machine/index2.html |
|
|
Mariano Guerra
2020-01-16 00:58 #
@Michael Dubakov @westoncb @magicmouse94937 @nagle could you reply here or send me a DM with a link you would like me to use to link to your profile/personal page/twitter account when I mention you in the newsletter? |
| 2 comments | |
| # |
nagle
2020-01-15 14:48 #
Hi all! I just wrote a blog-post version of a paper I submitted to PPIG (Psychology of Programming 2019) The blog post is: https://blog.coda.io/how-coda-helps-people-overcome-technolo… The actual paper I'll upload here. I'm sketching out a way to connect recent nervous system breakthroughs to programmable UI design, taking inspiration from how cognitive science breakthroughs anchored original UI design for the Alto. I'd love to hear what it brings to mind from this community. |
| 4 comments | |
|
|
Mariano Guerra
2020-01-15 13:02 #
https://medium.com/darklang/compiling-dark-to-sql-bb8918d1acdd |
|
|
Ivan Reese
2020-01-15 12:54 #
Cross-post because this has broad relevance: ../of-end-user-programming/1579116473.013100.html |
| 1 comments | |
|
|
Andreas S.
2020-01-15 11:44 #
In which I answer with the Code rush Documentary from 2000 about the Netscape -> Mozilla Transition : https://twitter.com/curious_reader/status/1217391915307622400?s=21 |
| 6 comments | |
|
|
Andreas S.
2020-01-15 11:43 #
And this one about tech documentaries: https://twitter.com/stevekrouse/status/1214990203473059840?s=21 |
|
|
Andreas S.
2020-01-15 11:42 #
Two tweets from Steve that I found interesting: https://twitter.com/stevekrouse/status/1215670463818371073?s=21 |
| 2 comments | |
|
|
Stathis Sideris
2020-01-15 08:01 #
https://techcrunch.com/2020/01/14/google-acquires-appsheet-t… |
| 1 comments | |
|
|
Mariano Guerra
2020-01-15 02:41 #
related: https://dhall-lang.org/ (they use Text instead of String a type , nice) |
| 5 comments | |
|
|
Mariano Guerra
2020-01-15 02:35 #
https://noyaml.com/ |
| 1 comments | |
|
|
Zubair Quraishi
2020-01-13 20:30 #
I was guessing that they wanted to solve one vertical with automation tools, and then move into other verticals with automation. Mine is just a guess since their lead engineer is part of this community |
| 5 comments | |
|
|
Srini Kadamati
2020-01-13 20:28 #
This seems to be a common approach. “How can software be used to make _ manual industry more efficient? Its lucrative / valuable but still done with old / no tech.” • Build a traditional firm (HR staffing, law firm, etc) • Observe + build software to automate • Gradually get rid of the recruiters, lawyers, etc. • Profit! |
|
|
Srini Kadamati
2020-01-13 20:27 #
smells more like general software / automation to me? @Zubair Quraishi I feel like their hybrid / empowering-lawyer approach either failed / didn’t have enough margins so they’re going more the software / automation route to take over problems that benefit from pure software they can charge for |
|
|
Zubair Quraishi
2020-01-13 20:26 #
https://techcrunch.com/2020/01/13/atrium-layoffs/ |
|
|
Zubair Quraishi
2020-01-13 20:24 #
Cool, so atrium , who is part of FoC got 75 million USD , but not sure how much is left, and pivoting to Dev tools. Did I understand this correctly? |
|
|
Michael Dubakov
2020-01-13 06:15 #
https://www.alexhudson.com/2020/01/13/the-no-code-delusion/ |
| 19 comments | |
| # |
Mariano Guerra
2020-01-13 03:54 #
Lobste.rs liked even less than Product Hunt :stuck_out_tongue: |
|
|
Duncan Cragg
2020-01-13 02:14 #
Hi, fellow innovator (yes, you!). I'm interested in your driving principles for the work you do in the future of programming/coding. For example, "state and i/o are bad/good", "text is bad/good", "always allow explorable explanations", "programmer must always see the data changing when the code changes", "anything else Bret Victor thinks", "don't allow syntax errors", "programming is about modelling the world", "it's time to break the programmer|corporate|etc priesthood!!", "declarative not imperative", "eliminate accidental complexity", "flappy bird in 10 lines".. What are the fundamental principles you always look to (and have always held to, looking back) when making any technical or design decision, even if only subconsciously? |
| 35 comments | |
|
|
Mariano Guerra
2020-01-13 01:10 #
Last week's newsletter is slowly moving through a series of pipes to a mail box near you: https://tinyletter.com/marianoguerra/letters/future-of-codin… |
| 16 comments | |
|
|
Nick Smith
2020-01-10 18:34 #
Are there established principles for how to design a GUI that works well for both mouse navigation and keyboard navigation (maybe even touch)? Been working on a structured editor and feels like I'm stumbling blind / reinventing some unknown wheel. Working on intuition and some reference material like spreadsheets and note-taking apps (Notion etc). |
| 30 comments | |
|
|
Dafydd Rees
2020-01-10 09:04 #
I’m trying to track down a Dave Parnas quote - apparently he said something like “You can’t get from the informal to the formal by formal means.” I think it was in the context of his work “A rational design process: How and Why to fake it”. Does anyone know or have an idea where I could look to find it? |
| 3 comments | |
|
|
Srini Kadamati
2020-01-10 04:31 #
love the detailing of the story: http://symbolflux.com/luciditystory.html#section-6 |
|
|
Srini Kadamati
2020-01-10 04:30 #
really interesting: http://symbolflux.com/luciditystory.html |
| 1 comments | |
|
|
Mariano Guerra
2020-01-10 02:39 #
https://twitter.com/ocornut/status/1215572213639843840 |
|
|
Mariano Guerra
2020-01-10 01:22 #
I'm trying the Product Hunt thing to launch the Newsletter, go and check it out: https://www.producthunt.com/posts/future-of-coding-weekly |
| 2 comments | |
|
|
Eddy Parkinson
2020-01-09 22:05 #
Re: History of spreadsheets - "Founders at Work: Stories of Startups' Early Days" by Jessica Livingston - has a chapter on Visicalc and one on Lotus 123. Both are page turners. Re: Dan Bricklin - He has a github account with an opensource JavaScript spreadsheet - Audrey used it to build a google style opensource spreadsheet. https://github.com/audreyt/ethercalc |
|
|
Shalabh
2020-01-09 16:24 #
http://symbolflux.com/luciditystory.html > Lucidity is a new way of understanding what programs are doing as they execute. > I've been working on it off and on since 2014, but it's looking like I won't be able to continue. So, I'm sharing what I have and telling the story of the project's origins. [edit] Author: https://twitter.com/Westoncb I realize this might be misread so adding author link |
| 4 comments | |
|
|
Pezo - Zoltan Peto
2020-01-08 14:12 #
@magicmouse94937 What do you think about Rx and Reactive systems (FRP)? |
| 7 comments | |
|
|
Steve Dekorte
2020-01-08 14:05 #
@magicmouse94937 Have you read any analysis of how that happened? I know a former Lotus exec I could ask for their side of the story. |
| 9 comments | |
|
|
Edward de Jong
2020-01-08 13:41 #
Bob Frankston and Dan Bricklin invented Visicalc, one of the most important inventions of the century. It is a very interesting lesson in entrepreneurship to observe how Lotus 1-2-3 and Quattro out-competed them, ending with Multiplan then Excel taking over, and now Google docs slowly chipping away at MS's lead. |
|
|
Mariano Guerra
2020-01-08 13:11 #
https://www.youtube.com/watch?v=YDvbDiJZpy0 |
|
|
Ian
2020-01-08 08:00 #
I've been trying to find more interesting ways to handle localization -- what we're currently doing is using graphql to query for each bit of text -- Has anyone written on how you'd do it in a pure language? Also if anyone's written something more holistic that combines "localized text" and "localized prices" / marketing text and db models I'd be interested. So far everything seems to get about this far: var greeting = i18n.__('Hello'); and stops there as localization is "solved" :stuck_out_tongue: |
| 5 comments | |
|
|
Mariano Guerra
2020-01-08 07:32 #
I have a tentative solution but I won't tell it to avoid biasing the answers or focusing on my idea |
|
|
Mariano Guerra
2020-01-08 07:31 #
do you know of any elegant solution to handle dragging things long distances or dragging more than one thing from the same origin to the same target (in terms of distance, can be different sources and targets). Similarly, do you know of a nice solution to drag/drop on touch devices? Both usually involve scrolling in my case |
| 13 comments | |
|
|
Mariano Guerra
2020-01-07 00:26 #
https://gbracha.blogspot.com/2020/01/the-build-is-always-broken.html |
| 17 comments | |
|
|
Eddy Parkinson
2020-01-06 23:58 #
DropBox, AirBnB and many other billion dollar companies got started the same way. They attended YC - much of what they were taught is now covered by this free online version of the course - https://www.startupschool.org Next one starts on 20th Jan. ... It covers many innovation related topics. Topics such as picking ideas, evaluating ideas, creating prototypes. .... Chris Granger (witheve) also attended YC. .... If you are working on a new idea, I can highly recommend it, I learned a lot. |
| 4 comments | |
|
|
Jason Laster
2020-01-06 16:04 #
Hi! We're doing a survey on the future of developer tools and would love some feedback if you have five minutes. https://qsurvey.mozilla.com/s3/firefox-replay-jll |
| 3 comments | |
|
|
Kartik Agaram
2020-01-06 12:41 #
I have a new project idea: cluster self-hosted solutions listed in say https://github.com/awesome-selfhosted/awesome-selfhosted by the dependencies they need. Basically, I want to be able to answer questions like, "I'm currently running X. What solution should I choose for y that minimizes my operational burden?" This seems obviously useful. But it's going to require a lot of tedious work to enumerate dependencies. Not just immediate ones but also transitive ones. There's lots of room for multiple people to work in parallel and at their own pace. Anybody else interested in joining in? |
| 4 comments | |
|
|
Steve Dekorte
2020-01-06 08:32 #
Any advice on how to come up with a good name for a project? I’ve found that artists are much better than engineers at this, but I don’t know many artists. |
| 21 comments | |
|
|
Pezo - Zoltan Peto
2020-01-06 06:56 #
What do you think about FRP and something like cyclejs? |
|
|
Brian Hempel
2020-01-06 05:53 #
The recording of Michel Beaudouin-Lafon’s UIST visions talk, “A World Without Apps”, is now online. https://www.youtube.com/watch?v=ntaudUum06E |
| 11 comments | |
|
|
Jonas Luebbers
2020-01-05 17:01 #
Does anyone know the current state of the art in functional reactive animation? I‘ve been reading about Conal Elliott’s Fran DSL but it seems there hasn’t been any recent progress in this space. I’m considering writing a JavaScript implementation of that hasn’t been done already http://conal.net/fran/ |
| 41 comments | |
|
|
Shalabh
2020-01-05 01:47 #
There's a thread about lisp machines on twitter that I really enjoyed: https://twitter.com/RainerJoswig/status/1213484071952752640 • All commands have uniform introspection • The console contains 'live views', not dead text • Every app (activity) has an embedded REPL which exposes all the commands of that activity. The commands can also be invoked via menus/buttons and each command is just a function • You can jump to source for any of these functions and live edit it |
| 2 comments | |
|
|
Edward de Jong
2020-01-04 23:25 #
You can compare two programs that do the same thing, say written in 2 different languages, by 1) counting the words (i use TextWrangler's word count which is a neutral arbiter), 2) counting the number of IF statements (because they create exponential increase in the possible execution paths), 3) counting the number of distinct API calls that are made, 4) counting the number of libraries one has to import, 5) counting the percentage of punctuation, and 6) counting the amount of documentation with priority given to the parameters to functions, which are very critical to understanding what the functions do. 7) counting the depth of nesting, 8.) measuring the uniqueness of function names; any overloading of a name means ambiguity as to which version of the same function name is actually going to run when called. (Sorry Java, you blew it again with your penchant for overloading!). Any language which offers dramatic simplification claims has to improve on these fundamental metrics. If you compare .NET for example to almost anything else, .NET will typically compare unfavorably because of the overwhelming amount of API's. Java also has a nightmare when it comes to functions. |
|
|
Shalabh
2020-01-04 14:25 #
I enjoyed reading this essay by @Paul W Homer posted inside a thread: http://theprogrammersparadox.blogspot.com/2007/12/nature-of-simple.html We often talk of simplicity but what exactly is it? > In any comparison of multi-dimensional things, we cannot easily pin one up against the other. It also connects with what @Ivan Reese was saying about incidental complexity: https://twitter.com/spiralganglion/status/1198636841831825408 |
| 4 comments | |
|
|
Peter Abrahamsen
2020-01-03 12:36 #
Reading the conference CfP, I’m struck by the contrast between the word “conviviality” and the strikingly individualist tone of the Illich quotes. Can anyone who’s read Illich comment? |
| 14 comments | |
|
|
Ivan Reese
2020-01-03 12:26 #
Cute. https://famicol.in/language_checklist.html |
| 6 comments | |
|
|
Andreas S.
2020-01-03 11:05 #
As usual interesting perspectives emerge from the meta perspective, if we start incorporating psychology and cognitive science into the process of software |
| 10 comments | |
|
|
Andreas S.
2020-01-03 11:04 #
@Stefan Lesser hi Stefan I think we are actually not that different from other people than we would like to think or other would like to think |
|
|
Breck Yunits
2020-01-02 17:36 #
@Will Crichton I haven't programmed anything for VS Code yet but since it's open source, typescript based and very popular it's probably easy to ramp up on. Sublime Text is pretty easy to extend with python. I have one sublime plugin locally that I add a hodge podge of functions too. |
|
|
Will Crichton
2020-01-02 16:48 #
When you want to prototype an IDE feature (code/runtime visualization, search/refactor tool, etc.), how do you start? Are there particularly flexible, plugin-friendly, language-independent IDEs? I’ve been looking at JupyterLab recently, but unfamiliar with ecosystems around more standard IDEs. |
| 10 comments | |
|
|
Stefan Lesser
2020-01-02 15:43 #
Usually, you’d want to send some things here in #general to #meta instead — let’s try the opposite today: Was just reading this thread in #administrivia: ../administrivia/1577580388.049900.html And it made me think… probably because I was just on Twitter and there I read this thread: https://twitter.com/Jonathan_Blow/status/1212857853754478592 We software developers are an interesting bunch. > seemed to work.. fine. Not pretty, not pleasant, but tolerable. > What makes us so much more tolerant towards weak design than the rest of the world? Why do we value features more than experience? And do you see this as a problem at all or is this just… fine? |
| 24 comments | |
|
|
Mariano Guerra
2020-01-02 08:53 #
https://www.case-podcast.org/27-felienne-hermans-on-programming-education |
| 2 comments | |
|
|
Duncan Cragg
2019-12-31 01:08 #
Form Follows Function - interaction design first, then make it pretty, not like Apple, etc: just make it pretty or remove all the functions so the poor user doesn't get confused! |
| 1 comments | |
|
|
Edward de Jong
2019-12-30 19:05 #
Boy that guy can sure make cute animated diagrams. There are things that are over-simplified, like the dash of the Tesla which doesn't have a rotary knob for stereo volume, which is well known to be the most ergonomic interface, or some of the crazy cellphone models that eliminate the volume rockers, but most software is too complicated, and if we are talking about software tools, they are way too complex. Dieter Rams, the great designer for Braun, did a great job of simplifying products without stripping their function. He is one of those great designers in the tradition of Henry Dreyfus, the greatest industrial designer of all time, who always built around function, then simplified. |
|
|
nicolas decoster
2019-12-30 16:47 #
As an echo to our recent discussion about fun, learning and design, here is an article that talks about hiding too much complexity makes us less resilient and having a bit less simplicity empower people and can be fun. https://ralphammer.com/make-me-think/ |
| 18 comments | |
|
|
Ivan Reese
2019-12-30 11:44 #
We now have a YouTube channel for the community: https://www.youtube.com/channel/UC_z2YnSvNaG0ljKgj-Vt2jg We can use it for whatever we want — demos, recordings of our virtual meetups, dispatches from the field, etc. • If you would like me to upload a video of yours, DM me and we'll figure out the details (file transfer, thumbnail, when it should be published, etc) • If you would like to be added to the channel as a manager (which, I believe, allows you to upload videos yourself), DM me and we'll set that up. I'm going to proceed assuming good faith. If anyone uploads way too many videos or otherwise abuses the audience, we'll alter course accordingly. • The moment we hit 100 subscribers, I'll give the channel a nicer URL. (Sigh) |
| 13 comments | |
|
|
Steve Dekorte
2019-12-30 10:24 #
Would anyone else be interested in a FoC demos YouTube channel? |
| 19 comments | |
|
|
molikto
2019-12-30 07:01 #
I wrote a little blog about structural editors. https://molikto.github.io/posts/09-structural-middle-grounds.html any comment? |
| 9 comments | |
|
|
Mariano Guerra
2019-12-30 02:31 #
Second issue of the Future of Coding Newsletter is going through the ether to an electronic mailbox near you: https://tinyletter.com/marianoguerra/letters/future-of-codin… Not yet subscribed? solve that problem here https://tinyletter.com/marianoguerra/ I await your contributions and/or your project's elevator pitch to be included as the project of the week here: https://github.com/marianoguerra/future-of-coding-weekly/issues/3 |
| 4 comments | |
|
|
Zubair Quraishi
2019-12-29 22:20 #
Does the work of these guys have any relation to the stuff here at FoC? https://stdlib.com/ |
| 4 comments | |
|
|
Zubair Quraishi
2019-12-28 21:38 #
@Pezo - Zoltan Peto My ideal project tools would be one where I don't know if I have any of those things in the list. My ideal tool would be something that would allow me to watch Netflix at the same time as building a system |
| 13 comments | |
|
|
Pezo - Zoltan Peto
2019-12-28 19:18 #
What ideal tools would you like to have in every project you work on? My list: • Graph db - I’m fed up with Relational dbs and Mongo like key value stores. (OpenCypher as query language would be really nice :smile: ) - offline-first support • Same language both for server and client (like typescript) • Static typing (I’d prefer Dependent Types like Idris, but the ecosystem is just not that mature) • Actor model, visualisation: like XState • Over The Air update support (for mobile apps) • Visual (Snapshot) Testing (like percy.io) • support for Property based testing & random tests |
| 3 comments | |
|
|
Zubair Quraishi
2019-12-27 22:31 #
I am quite new to this Slack group, and trying to find out if anyone has a document or overview which lists all the projects here, a brief description and status of the project, the people involved, as that would make it very easy to navigate the group? Or is this something I should create a shared google doc and we can all update it in the group? |
| 9 comments | |
|
|
Mariano Guerra
2019-12-27 11:34 #
If someone has an "elevator pitch" for their project I can add it as "project of the week", comment here or DM me to set it up :slightly_smiling_face: |
| 2 comments | |
|
|
Mariano Guerra
2019-12-27 11:33 #
100 subscribers to the Future of Coding Newsletter :tada: what? you are not subscribed? here you can correct that! :smile: https://tinyletter.com/marianoguerra/ |
|
|
Paul Butler
2019-12-27 07:41 #
I'm intrigued by the idea of multiple syntaxes that can map to the same AST, such as used in Forest: https://github.com/forest-lang/forest-compiler#FAQ I'm curious if anyone has seen something like this where the syntax structure remains the same, but keywords are translated to different natural languages. As in Forest, a layer between the code repo and editor would parse the code in its original language and translate the AST into the user's language, and do the reverse on the commit to the repo. One would have to take a bit of care to ensure that there are not namespace collisions between keywords and other names, but otherwise it seems possible to do. I'm also curious if anyone has taught an English programming language to non-English students, and how much the language mismatch was a burden? |
| 9 comments | |
|
|
Shalabh
2019-12-26 11:41 #
In a social gathering, someone (a music/visual artist) asked me the following: > When you see a working application, can you tell how the code is written and organized? What do you think? |
| 11 comments | |
|
|
Pezo - Zoltan Peto
2019-12-26 10:24 #
What is the best service similar to firebase or amplify which has rdbms or graphdb instead Nosql you are aware of? |
|
|
Zubair Quraishi
2019-12-26 07:16 #
Hi all, I was away for a while and just catching up on all the fantastic conversations |
|
|
Mariano Guerra
2019-12-23 07:12 #
> It’s important because it’s a way to conceptualize why neural networks are in a way better than classical ML algorithms. Because this lack of leaks means that anyone can play around with them without breaking the whole thing and being thrown one level down. Want to change the shape ? Sure. Want to change the activation function ? Sure. Want to add a state function to certain elements ? Go ahead. Want to add random connections between various elements ? Don’t see why not… etc. > I truly think that they are among the first of a "new" type of mathematical abstractions. They allow people that don't have the dozen+ years background of learning applied mathematics, to do applied mathematics. |
| 8 comments | |
|
|
Mariano Guerra
2019-12-23 07:10 #
https://blog.cerebralab.com/Neural_networks_as_non-leaky_mat… |
|
|
Pezo - Zoltan Peto
2019-12-23 06:41 #
Just bought the idris book 50% off on manning - there are also many other books / content on discount. https://www.manning.com/books/type-driven-development-with-idris |
|
|
Mariano Guerra
2019-12-23 04:06 #
feedback more than welcome, I want to maximize its utility, let me know if it display correctly, if the content makes sense etc. |
| 14 comments | |
|
|
Mariano Guerra
2019-12-23 04:06 #
First newsletter is out! it should arrive to your mailbox soon, you can check it here if you are impatient or tinyletter doesn't work :stuck_out_tongue: https://tinyletter.com/marianoguerra/letters/future-of-codin… |
| 5 comments | |
|
|
Mariano Guerra
2019-12-22 10:42 #
Reminder! tomorrow the first issue of Future of Coding Weekly Newsletter goes out!, subscribe here: https://tinyletter.com/marianoguerra/ want to collaborate? check instructions here: https://github.com/marianoguerra/future-of-coding-weekly collaborate to the first edition here: https://github.com/marianoguerra/future-of-coding-weekly/issues/1 |
| 1 comments | |
|
|
William Taysom
2019-12-21 10:25 #
Just met up with @Irvin Hwang on https://hubs.mozilla.com/ to talk about visual programming languages. The VR was good for being delivered over the web. The sense of presence was great. The world was full of weird. |
| 2 comments | |
|
|
David Piepgrass
2019-12-20 13:33 #
So VS Code is going to be more than a text editor... if I were going to make a custom editor, living in VS Code would be attractive. Looks like one must write it in TS/JS. "We continued to work on the custom editor proposal this iteration. (https://github.com/microsoft/vscode/issues/77131) As a reminder, custom editors are webview-based views that can be used in place of VS Code's normal text editor for specific file types. As of VS Code 1.41, Custom editors can now integrate with VS Code's Undo/Redo and Save functionality, which enables many interesting use cases including using them as visual and WYSIWYG editors. You can find the current API proposal in vscode.proposed.d.ts (https://github.com/microsoft/vscode/blob/master/src/vs/vscode.proposed.d.ts) and we have also put together some very simple extension samples that demonstrate using custom editors for text and for binary files. (https://github.com/mjbvz/vscode-experimental-webview-editor-extension) If you are interested in custom editors, please share your feedback on the current proposal and let us know if you would be able to implement it." |
| 1 comments | |
|
|
Ivan Reese
2019-12-19 12:24 #
COMMUNITY Just this morning, Jonathan Edwards wrote something that's stuck in my mind like a burr: > Slack is a terrible place to have conversations that last more than a day This resonates with me, and I know a lot of you feel similarly. We've all been in other communities hosted on other platforms, and we constantly feel the comparative weaknesses of Slack. At the same time, moving the community will lose good people, and I'm not sure we can survive that sort of a seismic shift. We could also introduce a second platform as a complement to Slack, but that doubles the effort needed to keep up. And besides, this community has remote colonies on other platforms already — Lobsters, Lambda the Ultimate, Twitter, HN, Lines, XRA's Discord, and countless others. What we have right here is what it is because of Slack. The aggressiveness with which Slack forces us to lose touch with past discussions and miss out on things happening in threads has the Twitter-like consequence of restricting how much time you can spend reading. For some that's a blessing, not a curse. If we moved to a platform with better support for long-form posts and rich threads, that would surely make it easier to read everything everyone writes, but I don't know how many of us could afford to spend that sort of time. All said, I'm very sympathetic to the position of Jonathan (et al.), and want to keep the search for alternatives alive. I like the idea of starting up a shadow community on another platform just to get a feel for it, so please keep posting suggestions for that in #administrivia. If enough of us are serious about moving, and we manage to agree on a spot, and we try it out and it feels good, I'd be happy to make it an official home of the community. I'm excited that Mariano Guerra is starting a community newsletter — I really hope that takes off, as it'll probably help any eventual change to the platform our community calls home. If you have any similar project you'd like to try out on behalf of the community, I have a stamp of Official Blessing that Steve left on my desk and I'm eager to use it. Of course, if you have concerns about anything that you'd rather not discuss openly, please send me a DM. I don't have any plans to explicitly change anything about how the community functions, but I am very open to new ideas. I love the energy and activity we have here. I love the split between academic research and industry practice. I love that folks are organizing meetups and helping each other find jobs. I love that many of us are working away on our own FoC projects that will take many years to come to fruition, and we'll get to share that difficult process together. Thanks everyone for making this place what it is, and I hope that we can keep it going and growing for years to come. |
| 41 comments | |
|
|
Ivan Reese
2019-12-19 12:23 #
PODCAST I'm working on new episodes! The first will come out in January. I'm hoping to keep a monthly cadence thereafter. The biggest constraint will be time — it currently takes me over 20 hours to make each episode — so I might adjust plans or process as we go. That said, I'm going to do everything in my power (as a music-person who owns a lot of microphones and fancy editing software, haha) to push the production quality of the podcast up to "professional" levels. (If you someday hear theme music, don't bristle — it's going to happen.) I'm also interested in trying out other formats, in addition to the "interview" and "research recap" episode styles Steve patterned. If you have suggestions for programming, production, formatting, ideal episode length, etc — I'm all ears. I've got a slate of guests lined up that I'm really excited to share with you, but I'd also like to keep the podcast very closely associated with our community. If you would like to come on the podcast to talk about your FoC project, shoot me a DM and I'll add your name to the list. Like many of you, I came to this community in the first place because of the podcast, and I'm honoured that Steve asked me to take up the torch. I'll do my best to keep the spirit intact while improving the things I can improve and despite losing Steve's unique perspective. Yes, that means more talk of visual programming than before. Yes, I will make a sincere effort to give static typing its due :slightly_smiling_face: |
| 6 comments | |
|
|
Ivan Reese
2019-12-19 12:23 #
Steve mentioned that I'd share some plans, so I'd better do that! |
|
|
Mariano Guerra
2019-12-18 15:11 #
hi, new experiment! :tada: Future of Coding Weekly Newsletter, subscribe here: https://tinyletter.com/marianoguerra/ want to collaborate? check instructions here: https://github.com/marianoguerra/future-of-coding-weekly collaborate to the first edition here: https://github.com/marianoguerra/future-of-coding-weekly/issues/1 feedback/promotion more than welcome! |
| 6 comments | |
|
|
Pezo - Zoltan Peto
2019-12-18 11:27 #
If you can help me out with Rx - OO relation, please! https://news.ycombinator.com/item?id=21828327 |
|
|
Steve Krouse
2019-12-18 04:57 #
Hey !everyone, big news! There's a leadership transition in the works here. Read all about it: https://www.patreon.com/posts/32445075. Comments and questions welcome :) |
| 20 comments | |
|
|
Mariano Guerra
2019-12-18 00:29 #
do you know about plan 9? what do you think about it? does it add anything to this group's objectives? |
| 4 comments | |
|
|
Edward de Jong
2019-12-17 23:58 #
If you are trying to draw nice diagrams, i just came across a tool intended for UML modeling, but it can draw a decent subset of diagrams from a simple domain specific grammar that isn't hard to learn at all. https://plantuml.com/state-diagram There are a variety of these types of diagram makers. I wouldn't be surprised if MS Visio has some complex language by now, it was the long-reining king of diagram makers. |
|
|
Shalabh
2019-12-17 23:08 #
https://bitbucket.org/urbasus/cspgt/src/default/ Jau is a development tool enhancing development of complex concurrent systems, reducing development effort and risk. This page explains why and how. Jau recognizes visualizing a select system subset as the key for understanding any aspect of a system, a prerequisite to develop any system further in desired direction. System behaviour is visualized as a graph. |
|
|
Lucian Ursu
2019-12-17 07:33 #
hello! I’m a fan of mind maps and I’m looking to find out more about related ways of visualising information. can anyone recommend any? |
| 12 comments | |
|
|
Edward de Jong
2019-12-16 23:16 #
One thing that really gave JetBrains a big leg up is that Google used their tools, and as the dominant software company on the planet, that means a lot. Having a sponsoring rich customer, which in the old days we called it a "sugar daddy", was very advantageous for many firms. JetBrains is indeed a huge success, with over 700 employees last time I checked. Only a few tool companies like Adobe are bigger. |
|
|
Steve Dekorte
2019-12-15 11:32 #
Inspiring. Some recent evidence that dev tools can be commercially successful and not require funding. https://twitter.com/chetanp/status/1205907182396395525?s=20 |
|
|
Konrad Hinsen
2019-12-15 08:32 #
Here's a well-written analysis of the state of Open Source software. Probably of interest to many in this group. http://marktarver.com/thecathedralandthebizarre.html |
| 9 comments | |
|
|
Shalabh
2019-12-13 10:34 #
https://jods.mitpress.mit.edu/pub/6pewbpry |
| 5 comments | |
|
|
Garth Goldwater
2019-12-13 08:43 #
haven’t seen that anywhere except games—Eg Outer Wilds: https://youtu.be/ifTMC7ybZDc?t=227 |
|
|
Adnan Chaumette
2019-12-12 15:38 #
Hey guys! Working on a node editor here and was curious to know if there are any similar projects out there that use auto-completion ? The idea is that you should get suggestions on what might be the best nodes that your current selection needs, regardless of whether you have those nodes in your graph or not. I can think of this vastly simplifying the loop concept for instance, where you'd suggest the user a loop node whenever they try to create a setup that requires one. Another utility here would be suggestion highlights of possible connections that you can draw between a currently selected socket and all the ones in your graph. Would love to know if there are projects out there that use a similar approach, just to make sure I'm not reinventing a wheel but improving one. |
| 2 comments | |
|
|
Deklan Webster
2019-12-12 14:20 #
Anyone seen Roam Research? It's a newcomer in the notetaking Notion/Evernote/etc space. It's been getting rave reviews on nerdy parts of Twitter. The focus on alignment with thought-process seems FoC-like. Not really Future of Coding specific, but it appears to be an adjacent topic here (based on past conversation) https://roamresearch.com/ |
| 9 comments | |
|
|
Clinton Judy
2019-12-12 12:55 #
This is on Hacker News right now. Really impressed by it, and I think it's of interest to this audience. https://www.anishathalye.com/2019/12/12/constraint-based-graphic-design/ |
| 3 comments | |
|
|
Andreas S.
2019-12-12 01:10 #
Who thinks this is a good opportunity to evolve how programming works by bringing multiple cultures ( industry/end user) into a discussion about how social (online) meida could look like? |
| 13 comments | |
|
|
Andreas S.
2019-12-12 01:09 #
Have you seen this statement? : https://twitter.com/jack/status/1204766078468911106?s=20 |
|
|
Andreas S.
2019-12-12 01:09 #
Hi everyone! |
| # |
Pezo - Zoltan Peto
2019-12-11 15:31 #
@Kartik Agaram is on Hn frontpage again :) |
| 4 comments | |
|
|
Eddy Parkinson
2019-12-10 16:45 #
Low-code/no code/red-lang/spreadsheets etc - I have been thinking about no-code apps etc, the problem of how to make programming more accessible. When it comes to making programming more accessible, one challenge that I see is combining the UI, data store and calculations. It is a challenge to combine these in a way that is accessible to the masses. An example of the challenge is no-code applications. There are many no-code applications that make it easy to edit the UI and data store. They offer an easy to use solution with very little learning. But don't make calculations available. A similar problem with most low-code applications, the calculations part of low code applications is typically not accessible in the way that a spreadsheet is, for example. ... Or there is red-lang, it does a good job of linking UI and calculations, but the data store is, as far as I can tell, a regular external database. ... Or take a spreadsheet, it is good at data storage and calculations, these are both accessible with very little learning, but the UI is a problem, you can't create a regular UI with a spreadsheet, you need to use the grid. Or look at scratch (drag and drop coding) it makes calculations and game style UI available, you can create complex games with it, I was surprised how complex, and it is easy to learn, but does not do data storage or data i/o style UI. .... The hard thing looks to be making UI, data store and calculations work as one. So the calculations can do validation and control writes to the data store. So the calculations are able to produce a responsive UI that guides the user. So the data from the data store is visible and editable in the UI. ... it looks to be a hard problem to make the UI, data store and calculations work together. It can be a challenge to do this in a good programming language, and very hard to create something that is easy for people to learn. |
| 11 comments | |
|
|
Pezo - Zoltan Peto
2019-12-10 12:23 #
Another thing: I am curious how do you resonate with “Erlang + BEAM + OTP vs Java + JVM + Akka” stacks? I have almost 0 knowledge on it, read some basic articles on the comparison, but I’d really like to see what are your thoughts on that in this channel. Any theoretical or practical pennies are welcome :slightly_smiling_face: |
| 12 comments | |
|
|
Pezo - Zoltan Peto
2019-12-10 09:46 #
Checking! |
|
|
Mariano Guerra
2019-12-10 09:45 #
orleans seems to be close to it: https://dotnet.github.io/orleans/ |
| 3 comments | |
|
|
Pezo - Zoltan Peto
2019-12-10 09:43 #
Hi guys! I have an idea, I believe it must exists but can’t figure out the exact keywords. First, let me enumerate the keywords which I think are related: • Transactions • OO • Eventstreams • “Transactions in OO” or “Transactions with Eventstreams” • Async & Concurrent computation • Erlang / Akka • STM (too low level?) I want to create an object graph (or eventstream graph?) where objects do not have direct reference to each other, they only communicate via messages. Objects are nodes and there is an edge from o1 to o2 if o2 is subscribed to o1 (o1 dispatches events which o2 listens to). Objects supposed to be “Processes” similar to erlang, objects are some kind of an “Async Computation”. Here comes the “new” stuff: There is also a root “StateManager” node which is subscribed to messages contain data about “UPDATING EXISTING IDENTITIES” like “SetGlobalScore <amount>“, any “Async Computation” (object) which directly depends on changing data must subscribe to this root node. If any data gets altered it does not happen immediately but via transactions. The computation which comes up with the new piece of data and wants to share it sends a message to the root “StateManager” node which handles the update. It must check if the data is in use somewhere down in the dependency graph (which I think might be a DAG with the exception of root node): if it is used, the computation might be interrupted (which is more like an exception in my mind) and the whole state might be rolled back to proper state or “handled properly”. If it is not used the state just can be updated: the root emits the message and it propagates down. This is just the core idea and quite vague, but the general goal is to add some safety to concurrent programming. Ah, and I’d like to do that everywhere, not just on server side but on client as well! :slightly_smiling_face: |
| 15 comments | |
|
|
Mason
2019-12-09 22:04 #
What is the state of the art in graphical (nodes and edges) programming? Anything general purpose? Or is this limited to a few domains? |
| 27 comments | |
|
|
Duncan Cragg
2019-12-09 13:13 #
Can't see either thread addressing diversity above, so I'll repost my response below: > Funny, that as an ex-Thoughtworks consultant, I'm not expecting a lack of diversity in my workplace, similarly where I am now (Tes), there's no lack of diversity, so in a way this concept is alien to me from my daily experience. Indeed, I'd be surprised to find myself on a white/English-native, male dominated team. Maybe that's just the Euro/UK perspective? |
| 2 comments | |
|
|
Ivan Reese
2019-12-09 09:22 #
I'm forking off a new thread about this quote, since the discussion in the original thread has moved past it. I think the quote is exactly backwards — that, rather, the fields where practitioners don't want to impress peers end up rotting. Taken to an extreme, those following the example of these imagined plumbers would have no interest in learning from another's work, or striving for a higher ideal through friendly competition, or acknowledging the excellence achieved by peers. In my encounters with anyone doing a trade or craft (whether plumbing, electrical, framing, carpentry, leatherwork, weaving, etc) the people who seem to genuinely care about doing good work themselves always also care about identifying good (and bad) work around them. I think there's probably a strong correlation here, if not causation. |
| 15 comments | |
|
|
Alex McLean
2019-12-09 02:22 #
Bearing in mind slack's amnesia - has there been any discussion around diversity here? Seems strange to talk about the future of technology without involving diverse voices. Should the forum be renamed Future of Coding for Comfortable White Men? |
| 45 comments | |
|
|
Cole Lawrence
2019-12-07 08:41 #
Hello, I'm working on an in-house forms library (managing user input validation and submission, and establishing controlled inputs in HTML) does anyone have advice on favorite forms/input management patterns they've used? I'm most interested in separating view and state management as much as possible. I have a strong preference towards FRP. |
| 9 comments | |
|
|
Shalabh
2019-12-06 15:52 #
Great talk by Mel Conway touching on tangible and live software: https://www.youtube.com/watch?v=u6eP77G6KbM |
| 5 comments | |
|
|
Peter van Hardenberg
2019-12-06 09:37 #
Oh, hey, Local-First software has been written up in WIRED today: https://www.wired.com/story/collaborative-software-wary-cloud/ |
| 12 comments | |
|
|
Shalabh
2019-12-05 12:45 #
The 'no apps' perspective: https://www.mail-archive.com/fonc@vpri.org/msg04503.html, found via https://twitter.com/yoshikischmitz/status/1202581577571557381 |
| 12 comments | |
|
|
Dafydd Rees
2019-12-05 09:49 #
I remember hearing a developer that’s a real liability boasting about “I start projects”. (As if starting anything is hard.) Now it does take a genius to surface a fully formed solution that reconciles all the forces and deals with everything - that would be like some kind of “code Mozart”- but I don’t see that happening. |
|
|
Dafydd Rees
2019-12-05 09:47 #
Look at the concept of “externalities” in economics: https://en.wikipedia.org/wiki/Externality - Would hackery in commercial development play the same role as pollution does in manufacturing. i.e. Pollution can be somebody else’s problem - in the same way if we hack the shit out of something and get some poor “maintenance programmer” to handle it, isn’t it the same sort of deal? So in a way, it’s not an accident but a business model :wink: |
|
|
Mariano Guerra
2019-12-05 09:34 #
the answer will be a generic minimum common denominator that doesn't answer much, such as "communicating" |
|
|
Mariano Guerra
2019-12-05 09:33 #
i think with things as general as software you can't find a single answer for anything. Changing software for another thing: "what are people’s real goals for writing?" |
|
|
Dafydd Rees
2019-12-05 09:25 #
Most people aren’t honest about their goals with software, and I’m thinking that a lot of the work I’ve done as a developer is really being a “short order cook for technological solutions”. On the one hand, I have impatient people that have money, connections and a pile of hastily put together software that does a bunch of something useful, with a lot of flaws, half-baked ideas and imperfect code - and on the other the Dijkstra brigade that build nothing but like to throw rocks because I’m either not building something “interesting” or because it’s not “correct” (… and one of the things I realised about computer science is that getting anything like a clear picture of what you want to build is more than half the battle.) |
| 6 comments | |
|
|
Kartik Agaram
2019-12-05 09:23 #
In a sufficiently advanced civilization the goal of all creation is to provide fodder for remixing. It's fanfic all the way down. |
|
|
Dafydd Rees
2019-12-05 09:21 #
… which goes on to exactly confront what nobody likes to talk about: what are people’s real goals for software? get something working quickly to raise money? build an initial product and run it for a few years and then sell up? write something slowly and solidly but keep it working for the long term? |
|
|
Mariano Guerra
2019-12-05 09:03 #
https://web.archive.org/web/20070916144913/http://wp.netscap… |
|
|
Mariano Guerra
2019-12-05 09:03 #
JavaScript is analogous to Visual Basic in that it can be used by people with little or no programming experience to quickly construct complex applications. |
|
|
Jack
2019-12-05 00:54 #
That might be a quick proxy for where people see possible overlaps, or overlaps they hadn't yet considered |
|
|
Jack
2019-12-05 00:53 #
To continue this discussion, there's one thing that I would be interested to know from people here. If I dumped a load of literature from the 'live coding arts' world here, much of which I am willing to assume would be new to folks here (although I'd be happy to be wrong about this), would you respond with which papers you might select as "worth further reading" from a quick glance? |
| 5 comments | |
|
|
Kartik Agaram
2019-12-04 16:13 #
@Jack: > There's "live coding" meaning changing a running program, and "live coding" meaning artistic programming as performance. The latter definition assumes the former as well, but the former not the latter. (I'd reply in a thread, but it seems too late for that in this conversation.) I think there's a distinction here as well, though I'm struggling to articulate it. Here's one attempt: it's about the size of the input space. A programming performance like in the Alexandra Cardenas demo above, or @alex's demo at ../share-your-work/1575367625.254000.html has a constrained input space. From instant to instant, any inputs entering the program are stable. Only code changes cause behavior changes. This is not true of "real programming," to put it mildly. If you introduced the possibility of inputs changing, the nature of the programming performance would be forced to change. It may take many different inputs to internalize the behavioral effects of a change to the program. Either you'd end up spending a lot of time on one snapshot of code (which seems like "real programming") or you'd need new visualizations for the input space (which seems really interesting) which show interesting features in a way that is amenable to System-1 processing by the visual or auditory cortex. The latter seems like an open research problem in general. The term "real programming" is intended humorously; I'm pointing just at the status quo among programmers. No live programs were maligned in the making of this comment. But I'm now weakly inclined to think these two categories have more contrasts than similarities. cc @Tom Lieber @Jonathan Edwards |
| 66 comments | |
|
|
Scott Werner
2019-12-04 14:39 #
How do you feel about what people are doing on Twitch/Youtube? I’ve tried livestreaming a pair programming exercise a few times and it worked out well even though it was a lot of the dealing with errors part of things |
| 10 comments | |
|
|
Alex McLean
2019-12-04 05:21 #
It's fallen asleep |
|
|
Alex McLean
2019-12-04 04:58 #
To challenge the idea that live programming/future of code community hasn't 'woken up' to live coding yet. • The first edition of the LIVE workshop in ICSE 2013 acknowledged TOPLAP and live coding as performing art in the history of live programming, included live coding papers and performances etc http://liveprogramming.github.io/2013/ http://liveprogramming.github.io/2013/about.html • By the second edition, there was no engagement with live coding at all. Jonathan Edwards presented a 'manifesto' pretty much denying its existence, starting with: "How will live programming get from our current aspirational demos to use in the real world?" https://2016.ecoop.org/track/live-2016 • By the third edition, live coding was removed from the intro text entirely. https://2019.splashcon.org/home/live-2019 |
| 10 comments | |
|
|
Jack
2019-12-04 04:44 #
There's "live coding" meaning changing a running program, and "live coding" meaning artistic programming as performance. The latter definition assumes the former as well, but the former not the latter. I should add the former above is based off Tanimoto's interpretation: http://projectsweb.cs.washington.edu/ole/Liveness2013.pdf On the music/arts side, see 'The Many Meanings of Live Coding' by Sorensen et al: https://muse.jhu.edu/article/542292/pdf |
|
|
Alex McLean
2019-12-04 04:41 #
but both feedback loops are always present in both cases |
|
|
Alex McLean
2019-12-04 04:41 #
The thing about live coding in live performance, whether at a conference or in a nightclub, is that the feedback loop between human -> code -> output -> human is really privileged. In 'standard' live programming, the feedback loop between human -> code -> human seems much more important. |
|
|
Alex McLean
2019-12-04 04:39 #
misunderstandings you had about your model, or errors in your model (can be hard to tell the difference) can lead to new understandings you couldn't have achieved otherwise |
|
|
Alex McLean
2019-12-04 04:39 #
there's always surprises when you run code though, which you can think about in terms of errors |
|
|
Alex McLean
2019-12-04 04:38 #
compiler errors aren't good, but you can make live programming environments where compiler errors are impossible |
|
|
Alex McLean
2019-12-04 04:37 #
I think Mark Guzdial leads the computing education field, and talks about the importance of live coding, showing students how to deal with errors and so on |
|
|
Alex McLean
2019-12-04 04:36 #
It's done in computing education and conferences |
|
|
Ionuț G. Stan
2019-12-04 04:36 #
Nobody thinks compiler errors are an art form. |
|
|
Ionuț G. Stan
2019-12-04 04:36 #
In "standard programming" we don't get in front of an audience to learn algorithms and make tons of mistakes. |
|
|
Ionuț G. Stan
2019-12-04 04:35 #
Yeah, yeah. I recognized your name :smile: It's a nice system, btw, it's just the live part of this kind of programming that still don't understand. |
|
|
Alex McLean
2019-12-04 04:34 #
Full disclosure, I made the system that alex is using there, happy to answer more questions :slightly_smiling_face: |
|
|
Ionuț G. Stan
2019-12-04 04:32 #
@alex sure, thanks for answering my questions. |
|
|
Alex McLean
2019-12-04 04:29 #
@Ionuț G. Stan Thanks for your thoughts by the way, I'd not realised that engineering problem-lead approach could be baked into the definition of programming before |
|
|
Alex McLean
2019-12-04 04:23 #
yes I like the point that saxophonists are 100x programmers :wink: |
|
|
Alex McLean
2019-12-04 04:22 #
In linguistics a performative utterance is one like "You are guilty" that performs an action. Pretty interesting in the context of programming languages |
|
|
Jack
2019-12-04 04:21 #
Ok great but my point stands |
|
|
Alex McLean
2019-12-04 04:20 #
Performative has a particular meaning in linguistics though, which has been expanded upon in performance studies. It's pretty interesting |
|
|
Jack
2019-12-04 04:20 #
> if you slow down performative live coding by 10x, it much more closely resembles 'normal programming' I hypothesise that the converse of this is true: if you instead speed up live coding by 10x, it becomes indistinguishable from playing the saxophone |
|
|
Jack
2019-12-04 04:19 #
all words are meaningless if you worry about them too much :wink: performative meaning "I am here in the moment performing for an audience" |
|
|
Alex McLean
2019-12-04 04:18 #
or 'performative' in general |
|
|
Alex McLean
2019-12-04 04:18 #
I'm trying to understand what 'performative' coding means at the moment, but maybe that's a discussion for elsewhere :) |
|
|
Jack
2019-12-04 04:17 #
indeed, i'm just referring to the fact that generally speaking performative coding is "faster" |
|
|
Alex McLean
2019-12-04 04:17 #
@Jack there's also slow coding though http://www.ludions.com/texts/2007a/ |
|
|
Jack
2019-12-04 04:16 #
you could say that 'normal programming' is more like a painter working slowly and taking time between each brush stroke, reading the painting, whereas the performative live coder is more like a potter spinning clay |
|
|
Jack
2019-12-04 04:15 #
but i would say that is more to do with the fact that it's harder to change the architecture of a program quickly, which is a problem faced by all programmers |
|
|
Jack
2019-12-04 04:14 #
the performer is always making decisions, but they are often with a discovery mindset (I agree this is different), and often focused on potentially smaller details rather than architectural scale considerations |
|
|
Jack
2019-12-04 04:13 #
@Ionuț G. Stan another thing that's interesting to think about, is if you slow down performative live coding by 10x, it much more closely resembles 'normal programming' |
|
|
Jack
2019-12-04 04:13 #
@Ionuț G. Stan one thing to note about these musical systems is that changing individual numbers really can change the entire musical meaning |
|
|
Alex McLean
2019-12-04 04:12 #
I think programming can be much more than implementing a pre-defined specification |
|
|
Alex McLean
2019-12-04 04:12 #
That's what I'm talking about really - that making things isn't about implementing something already decided, but seeing where material takes you. |
|
|
Ionuț G. Stan
2019-12-04 04:12 #
Maybe that's where the problem lies. |
|
|
Ionuț G. Stan
2019-12-04 04:12 #
Just to make sure, I don't understand the process of coming up with music in general, let alone when assisted by a computer. |
|
|
Ionuț G. Stan
2019-12-04 04:11 #
Right... to me she's just changing numbers randomly in different places. I don't want to sound critical, I just don't understand this new thing that's happening. And yes, there's live feedback, but it didn't seem programming in the sense that you know where you want to get and you still bump into issues. It's more a game of discovery. Probably because most of the code was already there, instead of being written on the spot. |
|
|
Alex McLean
2019-12-04 04:09 #
She's using a functional reactive programming language |
|
|
Alex McLean
2019-12-04 04:08 #
Well, Alex is programming right there, so I don't understand. |
|
|
Ionuț G. Stan
2019-12-04 04:07 #
I'll bite... from that video, I didn't really get this musical live programming thing. It seemed like such a random game of chance and less like programming. It was a video of Alexandra Cárdenas at LambdaWorld 2018 (https://www.youtube.com/watch?v=13qj6LnGFyA). |
|
|
Alex McLean
2019-12-04 04:05 #
it's this perception of overloading that I'm questioning really. Using a live programming language to make music doesn't stop it from being a live programming language. |
|
|
Alex McLean
2019-12-04 04:05 #
I mean live programming in general really, but the phrase "live programming" was re-coined by computer scientists to avoid association with performing arts because art is 'non-serious' |
|
|
Ionuț G. Stan
2019-12-04 04:04 #
I've only recently watched a video about this and it looks like an overloaded term because of the activity in the music community. |
|
|
Ionuț G. Stan
2019-12-04 04:03 #
By live programming you mean musical live programming, right? |
|
|
Alex McLean
2019-12-04 04:03 #
@Jack like design fiction? yep that's definitely valuable |
|
|
Alex McLean
2019-12-04 04:02 #
"We need to find a use case for all these live programming environments we've been building that no-one uses!" international community of people using live programming in the wild for two decades waves "Not that" |
|
|
Jack
2019-12-04 04:02 #
But I agree with the larger point |
|
|
Jack
2019-12-04 04:01 #
Wilful ignorance is often necessary in a creative process to create a fake new world to live in where different constructs can be taken for granted |
|
|
Alex McLean
2019-12-04 03:58 #
I think wilful ignorance is always possible |
|
|
Jack
2019-12-04 03:58 #
Maybe, but in a sense it's already impossible to ignore, people just haven't caught up yet |
|
|
Alex McLean
2019-12-04 03:50 #
I guess total lack of humility towards other people, means you miss out on benefiting from other fields. |
|
|
Alex McLean
2019-12-04 03:49 #
Strange when any web search for live coding / live programming will lead you right there. |
|
|
Alex McLean
2019-12-04 03:49 #
I think it's a shame though that future of coding / programming language experience design etc has so carefully ignored all the work in the live coding community, bringing programming languages to performing arts. |
|
|
Alex McLean
2019-12-04 03:21 #
Or if we do, it's tacit |
|
|
Alex McLean
2019-12-04 03:21 #
I think it's also worth pointing out that computer programming is latent and implicit. Coding is such a strange thing to do and we aren't actually able to introspect on what we're doing while we do it. If I've learned anything from the psychology of programming field it's that programmers have no idea what they're doing |
| 8 comments | |
|
|
Jack
2019-12-04 03:09 #
if many people here subscribe to the idea of 'universe as information/computation', then most of what happens around us can be considered some form of programming, just latent and implicit |
| 1 comments | |
|
|
Jack
2019-12-04 03:08 #
humility, also just more open minded curiosity about things that programmers think are 'not programming', especially in highly developed traditional craft cultures |
|
|
Alex McLean
2019-12-04 03:04 #
yes fair point, programming languages are amazing really, but humility is definitely required also |
|
|
Alex McLean
2019-12-04 03:03 #
the parts are super simple, but setting up the tablet loom is pretty mind-bending, best learned off someone else |
|
|
Alex McLean
2019-12-04 03:02 #
@Jack you just need tablets and different colours of yarn. You can make half-decent tablets by punching holes in square beer mats |
|
|
Jack
2019-12-04 03:00 #
I am greatly looking forward to a deeper reconciliation and creative merging of these worlds |
|
|
Jack
2019-12-04 02:59 #
I also think though that programmer culture has discovered some seriously wonderful stuff that has so much to contribute to this longer lineage of designing materials/medias/tools |
|
|
Jack
2019-12-04 02:58 #
That's surely a healthy exercise, where do I get one? |
|
|
Alex McLean
2019-12-04 02:56 #
Why not put your laptops aside and try out tablet weaving, find out what a fully developed computational technology feels like |
|
|
Alex McLean
2019-12-04 02:54 #
I think a first step in understanding the 'future of coding' is to understand what we've lost/forgotten about the 'past of coding' |
|
|
Alex McLean
2019-12-04 02:50 #
You either make interfaces that make it more efficient to import stuff from the devine/pure world of ideas into the messy physical world (hylemorphism), or you make interfaces that allow people to get more involved with other flows of forces in that mess |
|
|
Alex McLean
2019-12-04 02:47 #
Yes I think the only other approach that makes sense is a spiritual one.. Either ideas come from humble interaction with the world, or they come from the genius/virtuous maker channeling a divine god. |
|
|
Jack
2019-12-04 02:41 #
When you look at "the medium is the massage/message" through this lens, McLuhan is merely stating something that has been known to material craftspeople for 1000s of years |
|
|
Jack
2019-12-04 02:40 #
> making things is about following ideas through feedback with material I think programming people / interface design people are finally starting to wake up to this, with the increased interest in forms of 'material' programming using textiles, etc. In such material practices, the above statement is close to lesson 0, the essential ethos. |
|
|
Jack
2019-12-04 02:36 #
Live programming of games while other people play them: https://github.com/arcadia-unity/Arcadia |
|
|
Stathis Sideris
2019-12-04 01:53 #
https://blog.acolyer.org/2019/12/04/declarative-assembly-of-… |
| 1 comments | |
|
|
Alex McLean
2019-12-04 00:12 #
I think the idea that interfaces should be invisible is an outcome from the philosophy that making things is about transmitting ideas into the world. Therefore interfaces should be as seamless as possible, only existing to channel the genius of the creator. If you instead think that making things is about following ideas through feedback with material to see where they go, then interfaces should be interesting and characterful. |
|
|
Paul Butler
2019-12-03 14:51 #
Is anyone familiar with past work on typed dataframes? For example, being able to statically check a series of data pipeline operations and ensure that columns exist and are of the right type without executing the code? |
| 8 comments | |
|
|
Drewverlee
2019-12-03 10:02 #
This is a fairly broad question, so I'm open to any level of response. Does anyone have any recommendations on how to leverage software to address climate change issues? I would be happy with links to organisations or causes you trust. |
| 4 comments | |
|
|
Don Abrams
2019-12-03 05:48 #
Oh hey, just ran across an update to livecv (including a rename to livekeys) that looks future-of-coding-ey and it’s open source: https://www.youtube.com/watch?v=ZPt5KSy1wh0 https://github.com/live-keys/livekeys |
| 2 comments | |
|
|
Alex McLean
2019-12-03 05:37 #
Minecraft a popular example, in a different sense |
|
|
Alex McLean
2019-12-03 05:36 #
Fluxus is a nice example of a live programming game engine though |
|
|
Alex McLean
2019-12-03 05:36 #
well I guess you switch between live and programmable mode in Dreams, which is a shame |
|
|
Alex McLean
2019-12-03 05:35 #
@Dan Swirsky oh I thought you meant LARP. There are lots of examples of live programmable computer games, e.g. sandbox games like Dreams |
|
|
Alex McLean
2019-12-03 05:34 #
I guess it's similar to robotics, once a robot is useful, we don't call it a robot any more, e.g. washing machines. |
|
|
Dan Swirsky
2019-12-03 05:26 #
What I mean is, I have only ever seen examples like https://www.youtube.com/watch?v=YLrdhFEAiqo where visual elements are manipulated. What I'd like to see is a demo of what this would look like when programming a simple, live action game. Can one live-program a moving flappy bird against a moving background? Does one need to hit the space bar while doing this in order to prevent flappy from crashing? |
| 1 comments | |
|
|
Alex McLean
2019-12-03 05:14 #
Really for me live programming only has real value in terms of interacting with the world.. So I find your comment a bit surprising. |
|
|
Alex McLean
2019-12-03 05:12 #
I haven't been involved in the MUD scene for a couple of decades but see this is still going http://www.uglymug.org.uk/ |
|
|
Alex McLean
2019-12-03 05:10 #
(not the final version of that paper) |
|
|
Alex McLean
2019-12-03 05:09 #
I'm currently working on a live coding interface for weaving |
|
|
Alex McLean
2019-12-03 05:07 #
Evan Raskob's work springs to mind https://github.com/pixelpusher/liveprinter |
|
|
Dan Swirsky
2019-12-03 03:53 #
Surely. Any links to an example? |
|
|
Alex McLean
2019-12-03 03:21 #
@Dan Swirsky the latter has surely been done a lot. The former seems a strong contender too, I mean live programmable muds have a long history |
|
|
Ian Rumac
2019-12-03 03:10 #
> the less they’re considered worthy of being called programming at all there’s no true scotsman :) |
|
|
Dan Swirsky
2019-12-03 02:53 #
I have never understood whether and how live programming could be applied to programming a live-action game or an application that monitors and controls a manufacturing process. Is live programming only applicable to a well-defined subset of applications? |
| 3 comments | |
|
|
Alex McLean
2019-12-03 02:22 #
perhaps even, the more successful they are, the less they're considered worthy of being called programming at all (spreadsheets, scripting, patching) |
| 121 comments | |
|
|
Alex McLean
2019-12-03 02:17 #
To what extent is this true: "As soon as a live programming environment becomes useful enough that people actually want to use it (spreadsheets, live coding in performing arts, debuggers, javascript REPLs etc) it's no longer considered live programming." |
|
|
Mariano Guerra
2019-12-02 02:19 #
in the spirit of wirth: https://www.nand2tetris.org/ |
|
|
Wouter van Oortmerssen
2019-12-01 19:39 #
Angelo Pesce on hackability should appeal to many here: http://c0de517e.blogspot.com/2019/12/is-true-hacking-dead-what-we-lost.html |
| 20 comments | |
|
|
Pine Wu
2019-12-01 07:20 #
While this might be obvious to you all, but today while reading history it occurred to me that the name DynamicLand is a combination of Alan Kay's "Personal Dynamic Media" and Seymour Papert's "Mathland". |
| 5 comments | |
|
|
Don Abrams
2019-12-01 05:16 #
I’ve been trying to figure out better ways to visualize and classify functions that are M x M -> M (potentially monadic) Specifically there are properties/relationships I’d love to be able to “see” such as disjointness, symmetries (group? communative?), associativity, triangle inequalities (cartesian?), identity element, equivalences, and “primes” (all m in M such that M is only a result with itself and identity). Only thing I’ve found in general so far are MxM tables, which are rather opaque for some of these properties. Anyone seen any specific visualizations, families of visualizations, or property “classifiers” (for finite cases) like this? I was thinking something like 3 “circles” of points in M--the result “sandwiched” between the args-- might be revealing. |
|
|
Pezo - Zoltan Peto
2019-11-28 14:32 #
(Unavoidable) shared mutable state marks cooperating objects + one’s data depends on the other’s (in time) for runtime branching. Could not we explicitly restrict the access of (lets say 2) objects (1-1 methods) in time - relative to one other? We could listen to all the relevant(!) messages to validate the access of objects for the shared state. The dev should enumerate 2 things (for each accessing method per mutable state): • All the valid sequences of messages which indicate access is granted for the method. “Synced.” • All the valid sequences of messages which indicate access is denied for the method. “Sync needed.” (Modelled with Finite Automatons) We should be also be able to determine (generate) all the relevant(!) sequences of messages (per state per accessing method) - and check if something is left out. If so, the system prompts us and we must fill put the remaining cases to “granted”/“denied”. (The general idea is to always EXPLICITLY enumerate when to do and when NOT to do something so we can later check with exhaustive search.) By relevant messages and relevant sequences of messages I mean those which by cascading through in the system (calls) might have any chance to effect the access of the method. Only if there are too many branches (combinatorial explosion) shall we narrow EXPLICITLY the cases we think behave the same. (By defining more Finite Automatons). I have this idea for a long time now and I come back to it over and over again. Seems really simple, but did not find anything like that yet. The closest findings are something like TLA+ and Temporal Logic (especially from the complexity of CTL), but to me this process seems quite good and I am not sure why it does not exists yet. @Kartik Agaram @prax08 |
| 14 comments | |
|
|
Mariano Guerra
2019-11-28 06:32 #
if your language had a link type, equality would be over the url? the text? both? |
| 14 comments | |
|
|
Wil Chung
2019-11-28 00:18 #
Also, as a separate question, I was thinking of getting myself something for Black Friday. Either the Little Schemer or the Little Typer. Which would you recommend if you’ve read either? |
| 2 comments | |
|
|
Wil Chung
2019-11-28 00:17 #
Did anyone ever take the work done by Eve and carry forward the torch and keep developing those ideas? If not, why not? Was the approach a dead-end? I got the sense that it was a promising direction but they simply ran out of money/motivation. I haven’t looked deeply into everyone’s projects here, but been lurking for a while and I don’t seem to hear of any projects that claim to be descendants of Eve--though I could be wrong. |
| 23 comments | |
|
|
Steve Dekorte
2019-11-27 10:56 #
Has anyone made a “visual” (or otherwise more user friendly) programming tool for regular expressions? |
| 7 comments | |
|
|
Ivan Reese
2019-11-27 09:55 #
Earlier today @Jonathan Edwards tweeted this enjoyable blog post, Your Debugger Sucks [1], which references the Pernosco debugger [2]. I'm familiar with omniscient debuggers like Chronomancer, but this is the first I've heard of Pernosco, and it seems very neat. Omniscient debuggers take a step beyond time travel debugging, allowing instant exploration and comparison of program state across time. The video on the home page gives a sense of Pernosco's UI (not great), but the About page is what I found most interesting — a very cleanly written and compelling articulation of their vision, and a taste of what we've all been missing. [1] https://robert.ocallahan.org/2019/11/your-debugger-sucks.html [2] https://pernos.co |
| 1 comments | |
|
|
Garth Goldwater
2019-11-26 10:55 #
https://twitter.com/4lpine/status/1199384410199449600?s=21 new developments on the react/gatsby side of visual programming |
| 2 comments | |
|
|
Garth Goldwater
2019-11-26 10:50 #
i feel like this discussion is why i’d like to see a language/compiler/IDE that treats code editing as a sequence of transformations that get saved. it’s the best argument i think for structural editing: if you have semantic understanding of the syntax changes you’re making, “undoing” an abstraction would be a simple edit to the history where you undo the abstraction, or an append case where you “unroll” it into the result of the abstraction. eg: “inline” a function in one command to replace all calls with the function’s body with the called arguments filled in |
| 3 comments | |
|
|
Pezo - Zoltan Peto
2019-11-26 09:02 #
That is a bit long though. :smile: Sorry. @Kartik Agaram @prax08 |
|
|
Pezo - Zoltan Peto
2019-11-26 09:01 #
Sure, if 1. is the case it’s no problem I’m happy, the original abstraction is reused I don’t feel so bad, “it did worth it!“. But usually this is not the part I am afraid of. And also my point is, that it is only matter of time when reuse won’t be possible with these updated abstractions and I must just dump. Requirements changed so much and IN SUCH A WAY + IN SUCH AN ORDER, it is just literally EASIER to dump the existing (layers) of abstractions to get to the goal. Another point: knowing this happens all the time it feels wrong to think a lot about “complicated” abstractions which will help me in future. Earlier, I thought it is not a problem to sit and think a lot about these “partially good abstractions”, because I thought they will be useful. Also, reusing these “half baked” solutions seemed OK and justifiable. Now it feels like chasing a shadow and betting too much on catching it. 2.(b): it happens, I am OK with it. But here is the worst point: 2.(a): getting rid of the old abstraction(s). It is insanely hard! And it is weird why it is… Entangled code, changed meanings! Ill-evolved abstractions both in test and in production code! Whaaat?! I think that is the part we should do something about. “Half baked abstractions” feel like boundaries for safety (code reuse is also safety: “not to forget this case”-safety). But boundaries are rigid. It feels to me a “Sacrificing flexibility for safety”. Sure, abstractions also do have “meaning”, but this meaning alters over time (the dirty part, not the clean part) and sometimes the “stuff” is abstracted away is more like a fast changing “process” without real boundaries and not like an “entity” / unit / “noun” with clear boundaries. If it was a String its OK, it is a clean abstraction. My problem is with the “intermediate stuff” which are more like steps (which are more likely to change) in a process not a real entity like “AnIdiotAdapterFromXToYAfterZHappenedButBlah”. Abstractions feel declarative and rigid. Lack of abstractions feels imperative and flexible. So with all this what I am thinking about is this: The production code should be as flexible (dirty, ugly, duplicated, etc.) as possible, with SHALLOW (layers of) abstractions (shallow not equals low complexity). It feels a bit like “composition over inheritance” aka “fuck and duplicate over using defaults you wont be able to delete later + you have to duplicate later no matter what”. On the other hand it seems to be a good idea to have a nice set of integration tests with “full coverage” which tests DO SHARE a lot of abstractions for being able to describe “all the RAW cases”. (By raw I mean no/less intermediate stuff.) Maybe asserting on invariants in tests (and making these asserts reusable in test abstractions) is more maintainable then evolving and maintaining abstractions of production code. I might be 110% wrong. I am quite sure if I’d do this I’d pray for abstractions I did not introduce … Complexity does this all the time. The reason I feel its something else now is that its not complexity itself which ruins me (and my code) but the ORDER OF STEPS I get there. |
| 52 comments | |
|
|
Pezo - Zoltan Peto
2019-11-26 09:01 #
Let me share with you something really controversial which came into my mind. Origins of the idea: • Code duplication is better then using the wrong abstraction • Every system evolves, its abstractions evolve, they come and go Also, I think it is not too bad to refer to abstractions as units (like in Unit tests). I also think about abstractions as an “extracted” “step in the process”, aka “new policy” in the system, which is “some kind of a restriction”. What I see in my codebase that introducing ANY abstraction has pros and cons. In terms of new (LAYERS!) abstractions (which hide the sides from each other) there are things which can be expressed EASIER/SHORTER/TERSER (these are the things the developer probably thinks and reasons about) BUT, there might be things in future which are not easier/shorter/terser, on the contrary HARDER/LONGER/MORE VERBOSE. One of my points is that the business logic kind of things (which would be nice to abstract away) are going to change in softwares evolution, it is just a matter of time. That means, there will be things which were just impossible to see are coming and now we have extra (layers of) abstractions in our way. Sure, we have to refactor! We have to 1. reuse the “corrupted” / “wrongly evolved” abstractions for creating new ones [OR] 2. (a.) dump the old (b.) just find something completely new which respects both the old and new requirements |
| 2 comments | |
|
|
Mariano Guerra
2019-11-25 07:05 #
all apress books at 7 dolars this week, do you have any to recommend? https://www.apress.com/gp/shop/cybermonday-sale |
| 4 comments | |
|
|
Mariano Guerra
2019-11-25 05:08 #
any TLA+ interested people here? (http://lamport.azurewebsites.net/tla/tla.html) |
| 9 comments | |
|
|
Tom Lieber
2019-11-24 11:45 #
How familiar are people here with Acme, the “integrating development environment”? Its extension mechanisms are well thought-out and I think it’s only incidental that the lingua franca is plain text and that its affordances for inline feedback are abysmal. This is the best short video introduction, in which its extensibility features prominently: https://research.swtch.com/acme |
| 12 comments | |
|
|
Scott Anderson
2019-11-23 22:43 #
https://raphlinus.github.io/ui/druid/2019/11/22/reactive-ui.html |
| 1 comments | |
|
|
Ivan Reese
2019-11-22 10:37 #
(Meant to share this here in #thinking-together — posted it to #of-graphics by mistake. Doh!) |
|
|
Shalabh
2019-11-22 09:18 #
Mu is on HN frontpage now. cc @Kartik Agaram https://news.ycombinator.com/item?id=21604685 |
| 2 comments | |
|
|
Steve Dekorte
2019-11-21 09:51 #
What guides your choice of FoC project direction? For example, are you scratching an itch, or trying to maximize global creator productivity? I’m guessing those result in very different (at least initial) directions, though we tend to assume the former will result in the later. For example, I’m a big fan of structured code editors and it was one of the first things I worked on, but in retrospect I’d put them low on the list of things that could significantly increase creator productivity. I chose it because it was new and neat, not because it was particularly helpful. |
| 15 comments | |
|
|
Shalabh
2019-11-20 16:23 #
https://blog.acolyer.org/2019/11/20/local-first-software/ (on HN right now) |
| 1 comments | |
|
|
Alan Johnson
2019-11-18 21:09 #
do folks have a feel for how Unison and Darklang contrast with one another? both seem to have broadly similar goals |
| 8 comments | |
|
|
Shalabh
2019-11-18 10:15 #
This has probably been posted before but reposting because this always impresses me. I believe this note is from Alan Kay: > This system --including everything -- "OS", SDK, Media, GUI, Tools, and the content -- is about 10,000 lines of Smalltalk-78 code sitting on top of about 6K bytes of machine code (the latter was emulated to get the whole system going). The software mentioned has a windowing system, multiple desktops, IDE/code editing and running, paint, animation, document editing/viewing, gesture recognition). 16K lines on top of hardware.. how is this possible? (What am I missing?) Source: https://news.ycombinator.com/item?id=19722205 Link to demo: https://www.youtube.com/watch?v=AnrlSqtpOkw&t=135s |
| 22 comments | |
|
|
Tom Lieber
2019-11-17 18:56 #
One of my former labmates translated SQL92 into a GUI and recorded a 15-minute demo: https://twitter.com/eirikbakke/status/1193201350693265412 "The goal of all of this eventually is to have a system that I can replace a lot of these old-fashioned manually-made Microsoft Access applications and all the different views, forms, reports, tables, and so on that you see in those." |
| 4 comments | |
|
|
Garth Goldwater
2019-11-16 16:17 #
https://github.com/mrakgr/The-Spiral-Language/blob/master/readme.md this is going to take a while for me to get through but it seems extremely unique and also cool |
| 6 comments | |
|
|
Shalabh
2019-11-16 09:31 #
https://twitter.com/TimSweeneyEpic/status/1195743672899383296?s=09 |
| 12 comments | |
|
|
Pezo - Zoltan Peto
2019-11-16 07:56 #
I am still thinking about the “Visual DSL” based testing. What I think atm is that Dependent Typed languages will enable that very easily, but in anything “below” DT it won’t be easy to implement. “On the fly”, logical checking of related things is needed. |
|
|
Dafydd Rees
2019-11-15 09:17 #
Possibly also “Managing Technical People”. |
|
|
Dafydd Rees
2019-11-15 09:17 #
Here in London at the extreme tuesday club, somebody asked a brilliant question: “I am a professional project manager that has worked in many industries. I’m going to be managing my first software development team. What do I need to learn/know?” - I wish more people asked that. I’d say “The mythical man-month” and “Peopleware” would be to old-but-good books. |
|
|
Randy Brown
2019-11-15 07:14 #
https://twitter.com/MeritTechCo/status/1195340735345823746 |
|
|
Ian Rumac
2019-11-15 00:35 #
Anyone using/used with a lattice database or data structure or considering one? |
| 20 comments | |
|
|
Scott Anderson
2019-11-14 17:11 #
so if your job is programming, just like a writer you need to write words |
|
|
Scott Anderson
2019-11-14 17:11 #
resistance of visual programming\scripting might go a little deeper, both because historically there aren't many serious visual programming environments that software engineers work in (even though there are plenty that other types of professionals work in successfully...) and also I think now there is kind of an ingrained belief that software engineering = coding = typing text |
|
|
Scott Anderson
2019-11-14 17:09 #
the pre-occupation with best practices and the one way to do it comes from people wanting to de-risk professional software development while still keep it reasonably accessible to a certain class of programmers |
|
|
Scott Anderson
2019-11-14 17:07 #
I think if you can build something with a tool that gets people 200K-500K salaries (or more) if they learn how to us it effectively then it will become the "one thing" programmers use over time, even if that thing looked like a toy at first, the trick is to get there you need to get hobbyists, kids and maybe entrepreneurs to adopt it. Another option is to dictate that its the "official" option for an important platform or environment. |
|
|
Dafydd Rees
2019-11-14 14:08 #
It’s not just that I’d like to learn new things - I’d like to not have to drop old things that work better. Then there’s the adoption of shiny new things that were half-worked out by people that were merely good salesmen or famous. |
|
|
Dafydd Rees
2019-11-14 14:07 #
“Oh, we want to adopt best practices like gitflow”. (Now I feel extremely depressed.) These guys can’t imagine version controlling based on semantic features of the code - it’s all done with diffs of lines in a Unix-style filesystem like we’re in the 1970's. No progress is possible, and we definately haven’t heard of Envy/Developer. |
| 9 comments | |
|
|
Dafydd Rees
2019-11-14 14:02 #
I’m constantly dismayed by developers seeing one way to do things and then it’s seen as the only way things can be. The latest example is you want to do test-driven development of a new system? “cucumber is the only way to go”. Just imagine if they saw morphic and e-toys in squeak, and then learned about cucumber after that. |
| 8 comments | |
|
|
Ivan Reese
2019-11-14 13:11 #
The fact that programmers are perceived to reject alternative paradigms is an opportunity, not a blocker. Whoever manages to crack that nut will probably be received very warmly by many. After all, devs tend to be bigger champions of Bret Victor than non-coders — duh, right? We want BV-style reinvention applied to our coding power tools, too. So don't let the history of "programmers reject tools that make programming easier" dissuade you — those tools had a poor angle of attack and erred on the side of ease instead of power. Make something that is transparently more powerful than the status quo, package it for consumption. |
|
|
Mariano Guerra
2019-11-14 11:48 #
I ask the same about almost every dynamically typed language after lisp :stuck_out_tongue: |
|
|
Marcel Goethals
2019-11-14 11:38 #
How this is different from the plethora of already existing generic-app-makers is beyond me |
|
|
Dan Swirsky
2019-11-14 10:53 #
I want an easy-code app builder that's made for programmers. |
| 8 comments | |
|
|
Dan Swirsky
2019-11-14 10:50 #
Exactly. No-code app builders are for designers with little or no programming experience just like spreadsheets are for management types with little or no programming experience. |
| 2 comments | |
|
|
Mariano Guerra
2019-11-14 10:49 #
same with game engine tools, it's amazing what's possible there, we programmers build those amazing tools for others, but not for us, and the reason may be that we as a community reject tools that don't look complex |
|
|
Mariano Guerra
2019-11-14 10:48 #
look at tools like adalo, framer x, facebook's origami, they are getting closer and closer to being full replacements to the large tails of non logic intensive apps, but they target designers and non programmers because they know they won't reject them |
|
|
Mariano Guerra
2019-11-14 10:46 #
programmers usually reject easy to use things, they always move the bar on what means to code, html and css, web, php, RoR are things that even being programming or really close are rejected as "not the real deal", I think it's wise for adalo and the whole no-code movement to not target current programmers, since they would reject them as toys even when they could gain a lot of productivity by not having to code a larger chunk of projects |
|
|
Dan Swirsky
2019-11-14 10:45 #
Because low-code app builders aren't there yet |
|
|
Dan Swirsky
2019-11-14 10:44 #
I don't doubt that these no-code app builders are useful for the majority of apps. It's just that I'm still waiting for an easy-code app builder for the rest. |
|
|
Mariano Guerra
2019-11-14 10:40 #
many of the project on this slack may not be able to implement flappy bird (mine doesn't and that's ok), that doesn't mean they aren't useful |
|
|
Mariano Guerra
2019-11-14 10:39 #
the ones that don't will be a shrinking percentage, flappy bird may be the last one :stuck_out_tongue: |
|
|
Mariano Guerra
2019-11-14 10:39 #
a high percentage of apps in the app store can be implemented with that |
|
|
Dan Swirsky
2019-11-14 10:38 #
Every time I watch one of these, I have the same thought: But how do I no-code my own Flappy Bird? |
|
|
Mariano Guerra
2019-11-14 10:27 #
https://www.youtube.com/watch?v=qicS8eZh-cs |
|
|
Pezo - Zoltan Peto
2019-11-14 07:51 #
These days I am trying to find out a way how to visualise my tests. By visualisation I mean creating visual “DSLs” in which I can draw up both the input and the output as a 2D “ASCII art”. :slightly_smiling_face: I use typescript/javascript. Do you have any idea how to efficiently do that? Is there an established way (eg. lib) to do something like that? Example: input:
.deleteNode(0,0) expected result: (change on top left) .=========. |
| 4 comments | |
|
|
Mariano Guerra
2019-11-14 03:12 #
https://www.youtube.com/watch?v=c4cOa2cgOVo |
| 1 comments | |
|
|
Mariano Guerra
2019-11-12 03:15 #
https://techcommunity.microsoft.com/t5/Excel-Blog/Excel-Anno… |
| 1 comments | |
|
|
Duncan Cragg
2019-11-11 01:14 #
@Andreas S.: We have a #linking-together channel for off-topic stuff (although it gets used almost exclusively for on-topic stuff, for some reason.. :smile: ) |
|
|
Andreas S.
2019-11-11 01:04 #
It seems to me like almost the computer scientists can not believe or relate to the climate scientists |
|
|
Andreas S.
2019-11-11 00:54 #
It puts the finger in a very vulnerable spot. As you could see by the responses. Many people seem have problems relating our even listening . |
|
|
Andreas S.
2019-11-11 00:51 #
Thank you so much @Steve Krouse for asking this question https://twitter.com/stevekrouse/status/1193468765880668160 |
|
|
Eddy Parkinson
2019-11-11 00:29 #
Podcast idea: @Steve Krouse Rob Fitzpatrick, lost over $1 million USD. He has bankrupted 3 businesses. Because he did not know how to do user stories. The same is true for Microsoft, read Microsoft secrets, they had the same problem and used the same solution back in the 1990's. He has a book "The Mom Test". I assume he is happy to do an interview in exchange for a plug of the book. Video of him talking about the problem and solution. He says you should ask questions about current solutions. https://www.youtube.com/watch?v=0LwbFZkyRKk Not sure if the topic is right for the pod cast. But feel that the problem he describes and the solution are important to trying to make programming more accessible. |
| 4 comments | |
|
|
Shalabh
2019-11-08 18:51 #
Can we have software render like this? https://floooh.github.io/visual6502remix/ |
| 5 comments | |
|
|
Dan Cook
2019-11-08 17:57 #
What counts as "code" or "programming"? This was an interesting topic between @Steve Krouse and @Paul Biggar in podcast #43 (Unveiling Dark). Some of the contested areas were: What does everyone else think? |
| 64 comments | |
|
|
Doug Moen
2019-11-08 06:33 #
"Viewpoint: Toward a computer for Visual Thinkers" : Scott Kim, 1988. "What would a visual programming language look like, if computers had been invented by artists and visually oriented people, instead of by mathematicians and engineers?" As a first step, Kim proposes that the user's mental model of the program should be perfectly aligned with what is shown on the display: no hidden state. http://www.scottkim.com.previewc40.carrierzone.com/viewpoint/index.html The following video shows a graphical/textual editing environment where the full state of the editor is shown on the display. To use the editor, you must think visually, about what is shown on the display, instead of thinking abstractly and symbolically about the system's hidden state. https://www.youtube.com/watch?v=9G0r7jL3xl8 |
| 5 comments | |
|
|
rektide de la faye
2019-11-06 19:19 #
lovely chit chat from dave geddes @geddski on building a higher level component to update the state machines of his web games, https://mobile.twitter.com/geddski/status/1192193857946931200 |
|
|
rektide de la faye
2019-11-06 17:33 #
and master of editors Marijn Havebeke talking about programs as a series of immutable states comes very close to my aspirations & desires, https://mobile.twitter.com/MarijnJH/status/1191720489523318786 |
| 3 comments | |
|
|
rektide de la faye
2019-11-06 17:32 #
(hat tip to @round & his visual programming (althought not super applicable here honestly, this is a view of conventional programming)) |
|
|
rektide de la faye
2019-11-06 17:32 #
i ADORE this graphical workspace overview system in this gif, https://mobile.twitter.com/round/status/1159528332377165824 |
| 1 comments | |
|
|
rektide de la faye
2019-11-06 17:31 #
two things that caught my attention recently, |
|
|
Breck Yunits
2019-11-06 14:23 #
Interesting: http://www.dscript.org/ |
| 6 comments | |
|
|
Chris Granger
2019-11-06 13:29 #
I implemented it internally for Visual Studio, which was later modified and released as "Debugger Canvas" |
| 22 comments | |
|
|
Daniel
2019-11-06 13:29 #
@Dan Cook yeap that's exactly my line of thought too, the open question of course is how useful it will be once you start focusing more on 'concerns' than files/classes/lines |
|
|
Breck Yunits
2019-11-06 13:04 #
Sorry forget to tag you @Daniel |
|
|
Breck Yunits
2019-11-06 13:04 #
Hi Daniel, yes I've been doing a lot of experiments around this pattern. I haven't tried code bubbles specifically but in general the paradigm of editing a bunch of segments of connected code in "tiles" instead of arbitrary file blobs I think has potential if done right....I am a big fan of the "minimap" birds eye code view that sublime text really pioneered by executing the first very fast useful version AFAIK....recently I posted to see if they had considered something like code bubbles (I phrased it as a live UML view of the code: https://forum.sublimetext.com/t/uml-sidebar-similar-to-minimap-view/44856) |
|
|
Dan Cook
2019-11-06 12:33 #
I have not used anything like this before, BUT when I have to understand tangled up code, I usually end up drawing diagrams very similar to this. I can say such diagrams are useful because it's dramatically helped my understanding, even after coming back to it a year later. I can only imagine how much better it would be to have it to begin with / created automatically |
|
|
Daniel
2019-11-06 12:25 #
Hi all, I wonder have any of you had a chance to use Code Bubbles (http://cs.brown.edu/~spr/codebubbles/) idea IRL. It looks tempting but I would love to hear from someone who really tested it... |
|
|
Pezo - Zoltan Peto
2019-11-05 04:52 #
https://en.wikipedia.org/wiki/Constraint_programming Temporal concurrent constraint programming (TCC) and non-deterministic temporal concurrent constraint programming (MJV) are variants of constraint programming that can deal with time. I am really interested in that. Do you know any material on it? I feel like a lot of boilerplate code today is about wiring/hardcoding the temporal constraints into our codebase. When we want to make sure something works we create the control flow ourselves step by step. Instead, the computer could help us find the “basic” declarative constraints we need and it could generate one (of many) control flow and the correspondent glue code as “implementation”. I am really into this idea, I’d really like to explore this, because I realized I just can’t program without that. It feels incredibly lame. (I am aware of the non-temporal use cases.) |
| 17 comments | |
|
|
Shalabh
2019-11-04 17:43 #
https://www.johnhanacek.net/along-the-curve/2017/10/25/art-m… |
| 3 comments | |
|
|
Ivan Reese
2019-11-04 14:37 #
A new article by Vi Hart about their experiments programming with mixed physical/virtual objects: https://theartofresearch.org/combination-physical-and-virtua… |
| 2 comments | |
|
|
Breck Yunits
2019-11-04 11:22 #
On Thursday, November 21st, at 7am PST, we will hold a 1 hour virtual global symposium on Zoom. The first 10 people to sign up (https://docs.google.com/spreadsheets/d/1LTaw4s37aXAdH_wGICGy…) will each get 2 minutes to present the crux of what they are working on to the group followed by a short QA. More in depth side conversations can then happen in this Slack or offline. The worst presenter will be asked to leave the slack (jk!). |
| 14 comments | |
|
|
Shubhadeep Roychowdhury
2019-11-04 03:22 #
How to ensure to stay up to date with the bugs of the Open Source Repos? I have been using tons of Open Source Repos in my projects. But I always struggled to make sure that I am up-to-date with the bug reports. I am not interested in a thorough analysis of the repo. Just tell me if there is a new bug reported for the functions/modules/packages that I am presently using. How do you work on this problem? Do you have any useful tools you can refer to? |
| 9 comments | |
|
|
Robbie Gleichman
2019-11-03 13:56 #
This paper looks useful for understanding how to visually represent code: "Unifying Textual and Visual: a Theoretical Account of the Visual Perception of Programming Languages" http://recherche.enac.fr/~conversy/research/papers/onward2014-langVis.pdf |
| 6 comments | |
|
|
Ivan Reese
2019-11-02 22:32 #
Let's start a thread for this discussion, rather than creating a lot of scrollback for the whole channel. Here's @Adriaan Leijnse's prompt: > IIRC Xerox PARC & co used the most powerful computers available at the time to "invent the future": the graphical environments and programming languages regular people use now. > What would be the equivalent today? > My (naive) impression is that programming language and HCI labs don't seem to make use of 64 core processors with a 100 GB of RAM and GPU computing to similarly invent the future. |
| 67 comments | |
|
|
Doug Moen
2019-11-02 19:43 #
My impression is that the Xerox Alto was a minicomputer, comparable to a PDP-11 minicomputer, and was distinguished by specialized hardware like a mouse, a bitmap display, and ethernet. The Alto fit in a small cabinet. IBM mainframes of that era filled a room. I think that the true analog of an Alto-like computer today would be FoC projects that use specialized hardware to prototype new ways for people to interact with computers. A really good example would be dynamicland.org, which is Alan Kay's current project. |
| 1 comments | |
|
|
Adriaan Leijnse
2019-11-02 16:57 #
The software that is released seems fast enough, but what about the programs that never get written? Some behavior is very easy to model precisely using maths but trying to implement the modeling language bogs you down in low-level details. It would be nice to be able to experiment with reasonable performance on a supercomputer without having to worry so much about making programs usable on a regular computer. One example of this is FRP which took a while to run well for a limited set of programs. However, the model is way more expressive than what gets implemented. |
|
|
Steve Dekorte
2019-11-02 13:17 #
@Adriaan Leijnse Are your frustrations with software primarily about it not running fast enough? |
|
|
Adriaan Leijnse
2019-11-02 12:48 #
I think it might look like using some general (but highly parallelizable?) techniques that we know can be optimized using hypothetical sufficiently smart compilers or runtimes to run on normal computers. |
|
|
Adriaan Leijnse
2019-11-02 12:41 #
IIRC Xerox PARC & co used the most powerful computers available at the time to "invent the future": the graphical environments and programming languages regular people use now. What would be the equivalent today? My (naive) impression is that programming language and HCI labs don't seem to make use of 64 core processors with a 100 GB of RAM and GPU computing to similarly invent the future. |
| 1 comments | |
|
|
Pezo - Zoltan Peto
2019-11-02 08:38 #
Is there a formalization to add and validate constraints on the valid intervals in which particular events can be emitted in the system? I mean there might be multiple services/objects around waiting for messages and due the combinatorical explosion we can't enumerate all the possible sequences of events. I just can't believe there is no standard/proven way/know how to generate event sequences in any programming language. To me it seems it should be part of the testing libs maybe with additional abstractions for expressing the distinct "services"/"objects", but I don't see the need for a separate programming language for that, but still, I am not aware if that in the mainstream. I am wondering why is that. |
| 12 comments | |
|
|
Jess Cummins
2019-11-02 08:22 #
Hey friends! Wanted to say Steve's video with mpj on expressions and statements is a new top fav! Very exciting times |
| 2 comments | |
|
|
Garth Goldwater
2019-11-01 15:54 #
anyone who thinks statecharts are interesting should check out microstates.js: https://youtu.be/zWEg4-bGot0 |
| 9 comments | |
|
|
Garth Goldwater
2019-10-31 22:20 #
dunno if anyone’s been following mark nadal/gun js but his work is a tour de force for decentralized computing, clever algorithms, and low code size: https://youtu.be/5fCPRY-9hkc |
|
|
Garth Goldwater
2019-10-31 17:29 #
https://youtu.be/if72CFsF_SY surprised that dan ingalls’ work gets very little play here—some interesting stuff in this talk, including structural editing via drag and drop (with text, so a possible evolution of the block paradigm) |
| 3 comments | |
|
|
Duncan Cragg
2019-10-31 12:53 #
That's a Slack thread link, even though it may look like a YouTube link! ↑ |
|
|
Srini Kadamati
2019-10-31 08:57 #
http://archagon.net/blog/2018/03/24/data-laced-with-history/ neat post! |
| 4 comments | |
|
|
Shalabh
2019-10-30 17:09 #
https://croquet.io/ > We're still in pre-Alpha, but our website has gone live! > Croquet is a new distributed synchronization tool for games and apps. There are no servers. Instead clients are kept in sync using a public network of shared reflectors. |
| 16 comments | |
|
|
Edward de Jong
2019-10-29 22:46 #
It is amusing to me that his laptop has an Erlang sticker, when Joe Armstrong, the inventor had such a dim view of the Actor model. There is a lively reunion on YouTube of three famous senior UK computer scientists who each selected a different technology to pursue. One was Hewitt, the actor model, and Armstrong, and Hoare who had some other paradigm i forget which. Anyway they had a debate about what were the results, and Armstrong ripped them to shreds because he pointed out that is system worked and theirs didn't actually work. Pharo has the best IDE i have ever seen, but the underlying language smalltalk was DOA (dead on arrival). The original editions of the smalltalk book by Goldberg are worth a lot, because sensible people like me who bought that book tossed it out because the language is so clunky and hard to read, and frankly absurd. You send the message PLUS to the number 3 along with another operator 2, and then the 3 updates itself to 5. That isn't too far out, but when you get to bitmap manipulation, the model really gets ugly. The actor model creates not only huge numbers of little islands of state, but then compounds that mistake by creating a message passing system that is hell to debug. In any toolchain that becomes hypercomplex to understand, there are always exceptional people who claim it is no problem, but if you take a big actor model program, and pass it to another programmer, they will have zero chance of understanding it. It becomes a nightmare of dependencies and cross-connections, just like the human body. I only make these possibly inflammatory remarks to warn people to look up Armstrong's talk, and think twice about wasting your time on a model that has such a legacy of failure. If someone would like to debate this with me, we can have Steve Krouse act as referee, and hold a fire extinguisher nearby so when you burst into flames you won't be permanently harmed ;-> |
| 30 comments | |
|
|
Garth Goldwater
2019-10-29 16:34 #
https://youtu.be/yuk7n43xU4g can we get this guy in the slack if he’s not already in here? |
|
|
Tibor Halter
2019-10-28 10:01 #
I have an interesting struggle. The platform I'm working on is in an early stage so I would prefer to spend most of my time working on the product (write code). On the other hand, the platform has very few users, so really I should focus on spreading the word and getting users. But obviously the two are in lockstep, the better the product the easier it is to get users. I would really love to find an evangelist but I have no idea how. I'm not sure that's even possible / productive, as obviously it is me who knows most about the product. How do you solve this? |
| 30 comments | |
|
|
Garth Goldwater
2019-10-28 06:55 #
has anyone had particularly pleasant experiences graphically manipulating wide and/or deep structured data |
| 8 comments | |
|
|
Garth Goldwater
2019-10-27 15:59 #
my rule of thumb for sharing videos is if i’ve watched them more than three times and this one definitely qualifies |
|
|
Garth Goldwater
2019-10-27 15:58 #
https://youtu.be/9fhnJpCgtUw really thought provoking talk on using pattern matching for better data transforms, and then for better debugging, and then for better core generation |
| 33 comments | |
|
|
Breck Yunits
2019-10-27 12:47 #
Does anyone know what's going on with TabNine/Jacob? He seems to have gone completely dark about 2 months ago...not responding to emails, github issues, tweeting, etc |
| 1 comments | |
|
|
James Sully
2019-10-27 07:02 #
Are there any editor plugins out there that will construct a dependency graph of the functions in a file, and sort them topologically? |
| 15 comments | |
|
|
Breck Yunits
2019-10-26 14:50 #
"In contrast, China’s R&D spending reached $410 billion in 2016—more than Japan and Germany. China graduated 5 million STEM graduates—almost 10 times the U.S. number. Can we call it a race if one side appears strolling and not to be running? Additionally, our best researchers spend a third of their time not doing research but filling out forms and applying for a shrinking pool of grants (a remarkable inefficiency, like having the star players of a major league baseball team sweep the field rather than practice and play ball). The Chinese do not have these problems and provide immense, consistent support for research and education. " |
| 1 comments | |
|
|
Breck Yunits
2019-10-26 14:49 #
Interesting read: https://csis-prod.s3.amazonaws.com/s3fs-public/publication/1… |
|
|
Steve Krouse
2019-10-25 05:07 #
In other news, one of my podcasts is on the front page of HN now if anyone wants to join the discussion! :grin: |
| 1 comments | |
|
|
Steve Krouse
2019-10-25 05:05 #
Show FoC: https://twitter.com/mpjme/status/1187701259974905857?s=19 |
|
|
Delta
2019-10-24 21:18 #
I'm curious why this community isn't over on discord. It's free, whereas slack is not, and its emojis are tons better than slack's. |
| 5 comments | |
|
|
Garth Goldwater
2019-10-24 20:07 #
this might be too much for a text-based medium, but can anyone explain to me why macros (eg in a lisp) can’t just be implemented as functions that read data (a parsed file) and return data (another parsed file, transformed) and pass it to the interpreter by overriding its import references/module dependencies to replace the file on disk with the file post-transformation? like isn’t it just middleware for the interpretation process? checking my mental models here |
| 75 comments | |
|
|
Steve Krouse
2019-10-24 04:57 #
!everyone quick notice: please treat this Slack as a public, archived record. It is currently available publicly here[1] and may be in other places in the future. This Slack has always been open to the public, so I expect this to come as no surprise, but @Tom Lieber brought to my attention that we should be super explicit about this, and thus this message. If you have private things to say, please don't say them in public Slack channels. Thanks! [1] - https://observablehq.com/@stevekrouse/future-of-coding-slack-search |
| 5 comments | |
|
|
Garth Goldwater
2019-10-23 13:25 #
if anyone’s doing their project in clojure, you could get funded for $9k over 3 months by clojurists together: https://www.clojuriststogether.org/open-source/ |
|
|
Nick Arner
2019-10-23 08:57 #
Interesting looking company/project https://twitter.com/dflieb/status/1187019350361796614?s=12 |
|
|
Garth Goldwater
2019-10-22 19:46 #
reminder to watch this talk by @Chris Granger https://youtu.be/a_o-ZzgpiK8 or rewatch it if you have already—many people in here could skip ahead to ~30 minute mark because we already know the first part of the story (although it’s particularly well told version). it really concretely emphasizes a huge part of bret’s talks that i wish got more airtime: the importance of direct manipulation (further references in thread) |
| 26 comments | |
|
|
Doug Moen
2019-10-22 19:37 #
A brief live-coding demo of Userland from the LIVE conference. It's a cool mashup of a spreadsheet and the Unix shell. https://www.youtube.com/watch?v=gla830WPBVU The website userland.org is down right now. Repo: https://github.com/hishamhm/userland |
| 2 comments | |
|
|
Duncan Cragg
2019-10-22 15:56 #
@Brian Hempel - can you invite him here? |
| 5 comments | |
|
|
Brian Hempel
2019-10-22 15:09 #
They switched the talk order! the talk is right now. |
|
|
Brian Hempel
2019-10-22 14:12 #
At 5:30 US Central Time at UIST, Michel Beaudouin-Lafon will be giving a talk, “A World Without Apps”. Livestream will be here: https://www.twitch.tv/acmuist1 |
| 7 comments | |
|
|
Corey Montella
2019-10-21 11:26 #
Anyone here attending LIVE tomorrow, or Splash this week? |
| 7 comments | |
|
|
Edward de Jong
2019-10-21 01:14 #
A great lecture by Richard Feldman, on the Elm team, entitled "Why isn't functional programming the norm", explores why some languages are popular. https://www.youtube.com/watch?v=QyJZzq0v7Z4 |
| 29 comments | |
|
|
Shalabh
2019-10-20 23:04 #
http://phantomos.org/ Phantom is, basically, a virtual machine (VM) working in a huge persistent virtual memory. Part of the VM classes (some classes, called 'internal') are implemented in kernel, giving VM code access to low level kernel services. Persistent virtual memory is completely orthogonal to object space and VM (no relation between, for example, object boundary and virtual memory page, etc.) and is implemented so that abrupt computer failure or loss of power leaves system in coherent state. |
|
|
Will Crichton
2019-10-19 15:08 #
Are there any serious LaTeX competitors in terms of comparable vocabulary/document layout power, but better programming experience? Trying to understand e.g. variadic macros and my head is spinning. |
| 3 comments | |
|
|
Pezo - Zoltan Peto
2019-10-19 05:52 #
Hi guys! Let me ask you about an issue I have for a long time. The problem is that many times in “standard mainstream” languages a business term in the business logic is duplicated in different names and even IDEs can’t relate the dups, I have to rely on Good ol’ Search & Replace and/or regex - which does not help much really. What I’d like to see if I’d be able to assemble function names just as other piece of data in my program. I am wondering if that feature already exist somewhere (I’d suspect it’s in LISP if anywhere). Example: Instead having setA(A a), setB(B b), setC(C c) or (setA a), (setB b), (setC c) as different functions, I’d like to have ([set A] a), ([set B] b),([set C] c). So next time when I want to refactor/rename A, or even set to something else, I’d be able to do that easily. The reason I got there is that I am really into Refactoring and my belief is the easiest Refactoring method is(/must be) Renaming so its a shame not being able to Rename stuff in 0.1 sec. (just changing the characters, not even addressing the change in meaning!) Without easy, secure renaming (lol) my productivity can’t even start. |
| 33 comments | |
|
|
Will Crichton
2019-10-18 09:52 #
Are there any GUI systems that have undo/redo baked into the semantics? Meaning a framework where you as the programmer define an action in a way that’s invertible by construction, and then the system can automatically build an undo/redo framework around your actions. |
| 16 comments | |
|
|
Garth Goldwater
2019-10-18 09:45 #
http://px16.matt.is/ idk why i haven’t seen this essay in this slack yet—it rules |
| 2 comments | |
|
|
Garth Goldwater
2019-10-18 09:26 #
http://dimitar-asenov.github.io/Envision/ text docs |
|
|
Garth Goldwater
2019-10-18 09:24 #
https://www.youtube.com/playlist?list=PLcVmeBATx4WiPRrZWE_cs7N90LQGXNso- a great structural editor i hadn’t seen before with interesting ideas about scale, history, scripting and icons |
| 7 comments | |
|
|
Mariano Guerra
2019-10-18 08:06 #
https://vimeo.com/364546032 |
| 4 comments | |
| # |
Yair Chuchem
2019-10-18 08:00 #
The polls thing doesn’t seem to really work |
|
|
Chris Pearson
2019-10-18 05:14 #
Here's one example of a few threads complaining about VBA not being a focus for future development: https://techcommunity.microsoft.com/t5/Excel-AMA/The-future-… |
|
|
Chris Pearson
2019-10-18 04:38 #
(And by the way - the Excel team just did an AMA, for those keen to see the state of spreadsheets in real-world production at the moment/near-future. https://techcommunity.microsoft.com/t5/Excel-AMA/bd-p/ExcelAMA ) |
| 2 comments | |
|
|
Eric Hanson
2019-10-17 13:22 #
Otherwise, feedback generally welcome here. |
|
|
Eric Hanson
2019-10-17 13:20 #
I'm going to twitch stream about Aquameta at 5pm central time. Hop on in if you please. Questions and feedback welcome. https://www.twitch.tv/events/j5MGrQ91TwSzRpo28wqGdw |
| 1 comments | |
|
|
Kartik Agaram
2019-10-17 11:34 #
@Eric Hanson > Allow complete management of the database using only INSERT, UPDATE and DELETE commands (expose the DDL as DML) Do you have something like Datalog going on, where you try to only append rows, and you're capturing every mutation as a new version? If so I'd like to nerd out about that particular aspect, maybe under this comment. |
| 16 comments | |
|
|
Duncan Cragg
2019-10-17 11:17 #
Rather than plough through all the mind-numbing comments on HN, I usually wait for things to turn up in summary form in webshit weekly: http://n-gate.com/hackernews/ |
|
|
Eric Hanson
2019-10-17 10:45 #
Much to my surprise :slightly_smiling_face: |
|
|
Ivan Reese
2019-10-17 10:45 #
Discussion of @Eric Hanson’s Aquameta on HN: https://news.ycombinator.com/item?id=21281042 (Reminder — if you're going to upvote it, it won't be counted if you arrived at the page via direct link) |
|
|
Duncan Cragg
2019-10-17 02:04 #
/poll "The safety vs risk of my project is..." "safe and incremental" "building on existing with radical elements" "ground up risky and radical" |
| 16 comments | |
|
|
Mariano Guerra
2019-10-17 01:01 #
/poll "The time horizon of my project is..." "< 3 years" "3 to 5 years" "5 to 10 years" "more than 10 years" |
|
|
Mariano Guerra
2019-10-17 01:00 #
/poll "My area of work in my FoC project is in..." "Pure Research" "Applied Research" "Industry" |
|
|
Shalabh
2019-10-16 22:59 #
Catching up on some of the discussion around adoption and its importance. Diversity of opinion is a good thing! I do think that it's useful to identify what our positions are wrt some axes. For instance, research and discovery are very different than bringing a product to market. On the pure research side you're not thinking of products but are investigating ideas, new perspectives, maybe the 'mathematical structure' of things, hoping to find some powerful ideas that bring deep simplicity, order, strength and/or reliability to various endeavors. Newton wasn't interested in bringing a product to market. I believe this kind of research is valuable in the artificial sciences and design space (~computers) as well. Interestingly Newton spent a bunch of his life chasing alchemy to no avail. Back then it wasn't clear to him or anyone else why this pursuit might be less fruitful than the others. Today this would be obvious to anyone but why it wasn't back then is an interesting question - the deeper education from Newton etc. is probably not whats in the books - the specific formulae etc. - but perhaps the idea that processes can be encoded as forumulae and that these can be discovered, must be consistent, etc - the very medium of science. On the other end of this axis is Henry Ford - definitely many new ideas but in the service of bringing the product. Where would we be with the Model T? Perhaps somewhere in the middle are the Wright brothers. Adoption of product is more of a concern of the product makers. Adoption may also turn out to be valuable to the ideas made by idea seekers (Newton's ideas are very widely adopted), but it's not usually the primary goal because truly new ideas are almost never going to 'fit' in the sea of prevalent ideas. Another axis is the time horizon - do you have one and how long is it? This is kind of different from the research/product axis but long time horizons tend to less popular be in the product space. Another axis is the expectation of failure and risk - invest in safer options likely to have mediocre success or wild options likely to fail but an occasional super hit? In the product space, some investors go with this approach - VCs invest in 10 outlandish ideas and hope for one success. In research, I don't know if such funding exists.. I'm not super familiar with the academic space but it seems most grants favor safe and incremental research. It seems that incremental vs radical is another axis..almost all products and ideas have things they change and things they don't. Anyway, I've rambled quite a bit and no sure where to take this further so I'm just going to leave this at that. Thanks for reading. |
| 6 comments | |
|
|
Mariano Guerra
2019-10-16 09:01 #
anyone working on programming for ambient computing? :slightly_smiling_face: |
| 14 comments | |
|
|
Mariano Guerra
2019-10-16 09:01 #
https://stratechery.com/2019/google-and-ambient-computing/ |
|
|
Steve Peak
2019-10-16 08:44 #
Given that we agree there will be many DSLs/tools fitting many different industries. I’m proposing a new channel for cloud-centric languages for application developers as #thinking-together and #of-end-user-programming are too broad and IMO not capable to sustain this many sub-communities/interests. — Take for example languages could include Storyscript, Darklang, Ballerina, Bloomlang, Strat and maybe Stdlib. These are all cloud focused for application developers. I ask now: who is interested in this category (give a :thumbsup: if you are)? Should we create a separate thread for inspiring and sharing ideas (give a :hash: if you agree)? Thank you! |
|
|
Edward de Jong
2019-10-15 21:55 #
Certainly Python is the dominant scripting language of today, and because it is the de-facto standard glue language in the ML field, which is being taught everywhere and hyped as a magic bullet for whatever ails companies, Python will shoot to the top 3 languages after JS (which dominates web), and Java/.NET/PHP (which dominate server side). I don't expect that Python will ever be dominant in back end or web. |
| 7 comments | |
|
|
Will Crichton
2019-10-15 20:28 #
Like of course, each domain has its own set of primitives and operations that make sense for it, and we need libraries/languages/whatever to reflect that. The main question is rather, when there is shared structure between domains, how much of that can be captured by abstractions in the underlying programming system? |
| 5 comments | |
|
|
Will Crichton
2019-10-15 20:27 #
I feel like this question about many DSL vs. one big general-purpose language becomes useless at some point without actually discussing what a DSL is. I would argue Tensorflow and Numpy are DSLs, but they’re embedded in Python. Most people would just call them libraries. If it’s the latter, does that mean Python is the one true language for data science? |
| 6 comments | |
|
|
Doug Moen
2019-10-15 13:44 #
A single all-encompassing FoC language, for all domains, is unlikely. The future is DSLs. Some arguments for this. Also, how can we improve interoperability between DSLs? Requested by @Duncan Cragg |
| 13 comments | |
| # |
Alex Miller
2019-10-15 13:23 #
set the channel topic: https://futureofcoding.org/community.html |
|
|
Steve Krouse
2019-10-15 13:09 #
@Steve Peak the documentation for this Slack is here: https://futureofcoding.org/community.html. Let me know if you (or anyone else) has suggestions on improving it. I set up an automated Slack bot to message all new users with this link but maybe it's broken |
| 7 comments | |
|
|
Ian Rumac
2019-10-15 11:33 #
It’s a community, people discussing topics they like. If you like a topic, open a channel and tell everyone about it :shrug: |
| 3 comments | |
|
|
Steve Peak
2019-10-15 11:08 #
Secondly, it’s not clear who is responsible, what is the code of conduct, who are moderators, how to get involved, who is involved, etc... I can only deduce this by looking at who is most active? I don’t mean this to sound brass or rude, just asking serious questions about what’s going on in this adhoc Slack channel. I would be honored to help bring structure, or at the least suggest some. If @Steve Krouse is indeed raising $20M than these principles and policies should be well documented and visible, you agree? |
| 2 comments | |
|
|
Steve Peak
2019-10-15 11:01 #
I feel a little lost in this community. There are so many ways the “future of coding” will shape up. There is already many companies jumping in which have drastic different opinions on this future with different target users groups. Some are cloud backend focused, some are lambda languages, some are for gamers, some for data scientists, etc… I’m just curious where we can find “our people” and “our interests”. A gaming language is very different than a cloud-backend language, yet we seen to all jam ideas in a single thread. |
| 29 comments | |
|
|
Pezo - Zoltan Peto
2019-10-15 10:43 #
Also don’t forget many people use python as their first language (eg. for stats/data science), I am quite sure many of them don’t even know about the different implementations. They just default to the use case shown in the lab/tutorials/school. |
|
|
Gary Trakhman
2019-10-15 10:42 #
jruby somehow stuck but jython didn't, I think it was a timing issue. |
| 1 comments | |
|
|
Eric Casteleijn
2019-10-15 10:36 #
It's also been a pretty amazing accomplishment, technically. I remember one of the early progress reports at a EuroPython conference where they proudly announced that Pypy was now only 2000x slower than CPython. :slightly_smiling_face: |
|
|
Eric Casteleijn
2019-10-15 10:33 #
Folks for whom execution speed is critical are likely not using Python to begin with, or are served well by numpy or use Cython for the critical path, which does not force them to switch to a new ecosystem. Pypy seems to have found its niche in larger organizations that can afford to employ experts on maintaining it and its dependencies. I think it's been a valuable experiment, but like IronPython and Jython (not to mention a slew of less successful abandoned attempts), it runs up against a standard implementation that is good enough, and will always be a version or two ahead, and have the most batteries included. |
|
|
Wouter van Oortmerssen
2019-10-15 10:06 #
I agree that people generally WAY underestimate the inertia people will have to switch to their shiny new tech.. especially in programming languages. But Python is a bit of an extreme case, in part because almost any real world Python project involves some C library that touches a ton of CPython internals. Also interesting because Python users stand the most to gain from new implementations, given that it is so sloooow. I feel other language communities are more eager to embrace new tech, or at least are better set up for it |
|
|
Scott Werner
2019-10-15 07:54 #
I forget who it was, maybe Derek Sivers or Seth Godin who has a quote that something either needs to be 10x better or 10x cheaper to convince anyone to switch |
|
|
Ian Rumac
2019-10-15 07:50 #
exactly! |
|
|
Mariano Guerra
2019-10-15 07:48 #
time invested in a thing adds mass over time which increases inertia, if you have a team of python developers that have 200k loc on python, moving away is not just learning the new thing and rewriting the code. |
|
|
Ian Rumac
2019-10-15 07:44 #
Also in software, you gotta add the “coolness” factor |
|
|
Ian Rumac
2019-10-15 07:43 #
It’s more of transition inertia vs gain What would it take me to move? What are the improvements I gain? Do they address my painpoints/increase productivity? If gain is larger than inertia of using current product, you get adoption. Like illustrator vs sketch -> Sketch solved a lot of painpoints and increased productivity with transition inertia being low since a lot of concepts are the same. |
|
|
Kartik Agaram
2019-10-15 07:30 #
My lesson from examples like this is that there's no point chasing compatibility. I was telling @Pezo - Zoltan Peto this the other day. I'm not familiar with Pypy, but I've seen several OSs chase POSIX-compatibility, starting with OpenBSD. Nobody cares. Inevitably they aren't 100% compatible on the axes people care about, and 99.9% compatibility yields 0.1% adoption. (OpenBSD usage is all by people who live exclusively in OpenBSD.) And people are right. They're being rational. They're following the design rule that similar things should look similar and different things should look different. If it looks similar but is different under the hood it's in an uncanny valley. It takes a lot to build trust in it. If you're building something new today, stop trying to support existing software. It's a long, thankless death-march, and will never get you the adoption you want. Take the leap and let it be its own unique thing, without constraining it with the past. New projects take 10 years (full time) to gain adoption. Stop trying to find shortcuts. |
| 4 comments | |
|
|
Mariano Guerra
2019-10-15 06:39 #
we talked about creating a new channel, the name was #adoption I think, but maybe #users/#humans ? is a more general and fitting name? :smile: |
|
|
Mariano Guerra
2019-10-15 06:38 #
can that be generalized to "I ignore improvements if it means switching to a technology that is more niche/less used/less mature/more magical/I understand less"? I agree with your observation and my generalization, in that case as I discussed earlier with some people we should focus on adoption as much as we focus on the technology side if we want any foc solution to succeed. |
|
|
Konrad Hinsen
2019-10-15 06:21 #
Pypy is a drop-in replacement only for a pure Python codebase. Add C modules (which most big Python codebases use at some point), and the transition to pypy becomes a lot harder Another issue, at least for me, is complexity. I have way more trust in the CPython codebase, written and inspected by hundreds of competent programmers over time, than in the complex code generation machinery behind pypy. I have found and fixed bugs in CPython, but if anything goes wrong when using pypy, I wouldn't even know how to start debugging it. |
| 1 comments | |
|
|
Mariano Guerra
2019-10-15 02:34 #
can it be generalized to "if someone needs an improvement on dimension X, then they will look around and find it [on their current tool]"? |
| 11 comments | |
|
|
Ian Rumac
2019-10-15 01:58 #
Because it doesn’t really address pain points large swat of python devs have or offers something way different - if someone needs a performance improvement, then they will look around and find it. |
|
|
Mariano Guerra
2019-10-15 01:02 #
an interesting phenomena that should be of interest for people on foc: there's python which is used a lot, and then there's pypy, which is almost 100% compatible with python and > 4x faster, and almost nobody uses it. The non adoption of it should be a warning for people developing new and better technologies and expecting them to be adopted just because they are better. |
|
|
Pezo - Zoltan Peto
2019-10-13 13:37 #
@Kartik Agaram your mu is on HN frontpage :crossed_fingers::skin-tone-2: |
|
|
Andreas S.
2019-10-13 12:12 #
Interesting in general but also regarding self contained: https://collapseos.org/ |
|
|
Ivan Reese
2019-10-12 23:16 #
Jonathan Blow showed up in the comments on the HN Bel post with some excellent thought-clarifying questions: https://news.ycombinator.com/item?id=21237636 |
| 29 comments | |
|
|
Wil Chung
2019-10-12 08:08 #
PG announced his second Lisp variant: Bel. http://paulgraham.com/bel.html He’s taking an axiomatic approach to Lisp, as described here: https://sep.yimg.com/ty/cdn/paulgraham/bellanguage.txt?t=1570888282& |
| 37 comments | |
|
|
Daniel Garcia
2019-10-11 20:17 #
https://hcii.cmu.edu/news/event/2019/10/hcii-25th-anniversary-celebration this seems interesting, anyone planning to attend? |
|
|
Sam Hand
2019-10-11 03:25 #
I did, I guess it would make more sense to ask there. |
|
|
Duncan Cragg
2019-10-11 03:00 #
did you join #in-london ? |
|
|
Duncan Cragg
2019-10-11 02:46 #
:smile: |
|
|
Duncan Cragg
2019-10-11 02:46 #
I used to organise meetups through my career, but it does take a lot for limited reward, especially when people don't turn up, or turn up and talk bollocks. |
|
|
Duncan Cragg
2019-10-11 02:45 #
we've had one but are struggling to find a willing organiser I believe |
|
|
Sam Hand
2019-10-11 02:44 #
I saw people are having meetups over in the states, is anyone in the UK (specifically the London/Cambridge sort of area) interested in doing something similar? |
|
|
Garth Goldwater
2019-10-09 12:27 #
was actually referencing this video in my previous thread and was just reminded of how ahead of its time the self programming environment was: https://youtu.be/5Jhi5yN9S1o |
| 14 comments | |
|
|
Felix Kohlgrüber
2019-10-09 12:00 #
I'm pretty sure we've had Observable (https://observablehq.com) on this Slack before (at least I hope so), but I want to bring it up again. It's a js-based live computational notebook similar to jupyter notebooks, but with automatic recalculation (like spreadsheets). Using js as the programming language means that computations can run client-side, with makes it trivial to get started and publish notebooks. I've created a medium-sized notebook over the last two days (https://observablehq.com/@fkohlgrueber/warming-stripes) and really liked it. Some things are a little weird, but it works surprisingly well even though it is built on top of js (which was never designed for this kind of execution model). What do you think about this project? Is this a good step towards end-user-programming? |
| 7 comments | |
|
|
Garth Goldwater
2019-10-09 10:14 #
half-baked thought: for programming languages, the environment (in the lisp sense: “which variables are in scope and what are their values”) is really just a poorly constructed database we blindly query against by typing symbols and seeing what they resolve to (or if they resolve to anything). Most (all?) programming activity can be boiled down to: 1. adding a key/value to the database (eg by defining a function or variable) 2. finding a value (calling a function, referencing a variable) 3. doing some transformation with the value, usually involving 1 or 2 to find instructions for the work to be done (eg, resolving the symbol ‘+’) 4. querying a location on the OS and receiving or sending data to it (stdin/stdout etc) simplifying the UX (especially with feedback) on this would do a whole lot to make programming better. especially if we specialized a structure editor to understand not merely “here’s a semantically valid edit” but “here’s the environment before and after this change” |
| 35 comments | |
|
|
Steve Krouse
2019-10-09 07:40 #
!everyone I've decided that what this community needs to really take off is just a little more resources. To this end, I'm raising $20M to fund this community. This is no joke. I asked Alan how much we need for the real computer revolution and that's what he said. Let's go do it! |
| 254 comments | |
|
|
Steve Krouse
2019-10-09 07:32 #
If you're in Boston, go to this tonight! It's going to be amazing |
|
|
Steve Dekorte
2019-10-08 11:47 #
Would a demos channel where people can post their latest demo videos be helpful? |
| 7 comments | |
|
|
Martin Kavalar
2019-10-08 05:58 #
anyone here coming to OOPSLA/Splash and plan to attend LIVE? I'm a bit confused if registration is just included in the normal wednesday ticket |
| 5 comments | |
|
|
Dan Cook
2019-10-07 17:10 #
Oh, and apparently a lot of stuff I thought was new, was actually part of ALGOL in the 60s, and it got cut down and down until we got something like C. (In some ways, Rust is like starting from C and heading back toward ALGOL) https://youtu.be/eEBOvqMfPoI |
|
|
Dan Cook
2019-10-07 17:07 #
You can't kill LISP, it keeps coming back :) |
|
|
Breck Yunits
2019-10-07 15:25 #
I thought it was relevant. If you want to make a language that is used 30 years in the future, perhaps it might help to make something that would have been relevant 30 years in the past |
| # |
breck7
2019-10-07 15:24 #
Just read this from Taleb's Twitter: |
| 9 comments | |
|
|
Kartik Agaram
2019-10-07 13:52 #
As an alternative experiment, I created a wiki exclusively for escalator pitches. Here's mine: http://futureofautomation.wikidot.com/mu The benefit of a wiki to me is that there is (hopefully! haven't checked wikidot yet) a way to get notified when people update docs. I'd love to have some peripheral awareness of how people are reimagining what they do. Who's coming 'closer' to me in phase space, and who's moving 'away'. If this seems interesting I'd love for people here to create pages for themselves. I'm going to follow all pages created. A word on the URL. It comes from the conversation on Saturday where Steve Dekorte helped me see that there may be divergent needs for two broad categories of use cases: creators and automators. I definitely find myself very clearly on one side of that divide, and that's reflected in the URL. However, I don't intend to exclude creators. I just wanted to leave 'futureofcoding' available for the community here to take charge of, in case we decide to stick with this experiment. Bottomline: I'd love for everyone here to make a page for themselves, whether they fit into this very fuzzy categorization in my mind or not. |
| 7 comments | |
|
|
Duncan Cragg
2019-10-07 12:07 #
Just seems a shame not to use this kind of material in the spreadsheet if people are writing it, that's all! |
| 11 comments | |
|
|
Shalabh
2019-10-07 10:15 #
Wait.. elevator goes in the spreadsheet and escalator goes on your own page, or..? I'm confused. |
|
|
Duncan Cragg
2019-10-07 10:08 #
if you don't, then I will, and I may f#ck it up :smile: update: only joking! |
|
|
Duncan Cragg
2019-10-07 10:08 #
.. under "USP (or your elevator pitch!)" |
|
|
Duncan Cragg
2019-10-07 10:07 #
https://docs.google.com/spreadsheets/d/12sTu7RT-s_QlAupY1v-3… |
|
|
Duncan Cragg
2019-10-07 10:07 #
paste short elevator pitches in here once you've written one: |
|
|
Ivan Reese
2019-10-07 07:46 #
To be clear — I don't think we should answer these questions directly. They're just things to think about when writing your vision statement. You don't need to address those questions at all, even. I think it'll be more helpful for people who want to learn about your work if you write something that is self-contained, like an elevator pitch (but a bit longer — a page, roughly — so more like an "escalator pitch"). Full sentences and paragraphs. Assume the audience is a member of the community but not aware what your project is about. And placed on your website, so people in the future can refer to it with ease. I'll try to write up something for my own project as an example tonight, if that helps. |
| 2 comments | |
|
|
Yair Chuchem
2019-10-07 05:12 #
1+2) Almost everything and everyone, not down to device drivers but from systems up to end-users making drawings and videos 3) Complete disconnect between programming tools and end-user tools. In programming tools: Lack of immediate feedback, limited plain text interface, lack of integration, bloat, complexity. In end-user tools: Fixed and limited appliances (see http://pchiusano.github.io/2013-05-22/future-of-software.html) 4) Subtext and pure functional programming 5) Grand leap forward 6) Lamdu’s approach is to try to bring programming towards end-user programming rather than to add programming into an end-user-ish starting point |
|
|
Ivan Reese
2019-10-07 00:34 #
That conversation on Saturday was epic. Thanks everyone for weighing in on that. This is exactly why I come here. Early in the discussion, @Steve Dekorte asked the following: > [With respect to] specific visions, would folks here find it helpful to have a way to collect member’s (brief) thoughts on their perspectives on FoC, and their project’s vision and implementation? I'd love to communally decide on a "business card"-like way to share our visions and projects. Something like a 1-page (max) writeup. These could live on our personal or project websites. We could make it the norm to add this link to your Slack profile, so people can see your vision statement by clicking on your name then visiting the link. Based on that big discussion, I wrote up some thought-clarifying questions that could be used as writing prompts. These aren't meant to be directly answered, but they might be useful axes to establish in your writeup.
In a thread (I'll start one), I'd love feedback on the idea of the 1-pager, and on these questions. Feel free to suggest different clarifying questions / writing prompts, or just to nit pick wording, if you think there's some merit to something like this. |
| 11 comments | |
|
|
Steve Dekorte
2019-10-06 14:50 #
Does anyone know of an OO language where objects have externally explicit namespaces for their protocols? For example, instead of something like “aView.onDropEnter(…)” it might look like “aView.dropping.onEnter(…)“. |
| 25 comments | |
|
|
nicolas decoster
2019-10-06 02:22 #
In fact, when I do some Scratch workshop to show what programming is to people who never do it, I show how simple it is to program a simple game with Scratch. I tell them that during the workshop they have used to chore concepts programmers use (data, loops, if/then/else...). But what make the difference with professionnal developpers is that the dev have to manage complexity, and they use those raw concepts for that. |
|
|
nicolas decoster
2019-10-06 02:18 #
About complexity, I think that actually programming is an act to manage complexity. My job as a programmer is to tackle a complex problem and produce a solution to it that it is manageable and the most easy to reason about as possible. So the complexity is the "matter" that we mold as programmers. All tooling and language are attempts to help us in that task, and their goal is to "simplify" complexity. |
|
|
nicolas decoster
2019-10-06 02:14 #
I have missed the starting of this discussion, but find it very interesting to read! |
|
|
Dan Cook
2019-10-05 17:39 #
A lot of it is about trying too hard to apply symmetries to everything: https://youtu.be/FAZ4GjPKmVI |
|
|
Shalabh
2019-10-05 16:21 #
The points around complexity are interesting. I do agree many things seem more complex than they need to be. OTOH, we are also capable of aggregating many simple things together until the whole becomes more complex. So we're always pushing against a boundary where things get too complex and start to get mind boggling. The question then is how do we do more before we hit this boundary? And how do we make survive complexity rather than avoiding it? |
|
|
Shalabh
2019-10-05 16:10 #
Talking about the culture of complexity, I'd like to repost Jonathan Edward's https://alarmingdevelopment.org/?p=1173. There is definitely a cultural issue, not just a technical one. |
| 1 comments | |
|
|
Tim Babb
2019-10-05 15:28 #
IMO the closest thing to hitting all of these of which I am aware is Luna. But it fails on two big counts: (1) it is not closed— IIRC they wrapped Haskell. In particular, Haskell expressions were exposed in the editor, requiring the user to be able to speak Haskell in order to be able to use Luna. This is not a small mistake— the set of users who would need to use a visual tool the most are excluded from using it right off the bat. (2) The UX was, for a node-and-wire tool, not very good. It was visually "snazzy", but not very usable (no offense Luna devs). It seemed to me like the designers either weren't familiar with mature node and wire tools, or failed to learn from them. If there is something that hits all of those, I would be very interested in knowing about it! Also curious what y'all think about each of those points and/or if something is missing. |
| 3 comments | |
|
|
Tim Babb
2019-10-05 15:28 #
@Kartik Agaram It's hard to answer that without enumerating all the zillions of ways that previous systems have failed :slightly_smiling_face:! But I think there are a few major categories of requirements, without which a system will fail at being a widely accessible, general purpose visual programming language. So put another way, the topic is "what does a system need in order to hit the mark of doing for programming what GUIs did for all other software in the 80's and 90's?" - Node and wire. - This is the current best way to visually represent general proceduralism. I'm convinced of this after spending over 11 years working with mature tools of this form, and seeing how successfully they're used by non-technical artists. There might be a better way to visually present proceduralism, but if there is, I'm fairly certain it hasn't been invented yet. Wizards and Scratch-clones are common approaches which are clearly, inescapably inferior. - Domain agnostic. - No one would use a programming language that only allows images as a data type (for example), or only 2D tables— they would be niche tools. We probably wouldn't even call them programming languages. But this is the state of affairs for almost all existing node-and-wire tools. It needs to be possible to operate on any kind and shape of data. - Extensible / complete. - It must be possible to process things in ways the language designers didn't anticipate or explicitly design for. In fact, there cannot be any kinds of processing that are impossible to express; the test for this is "Turing completeness". No one would use a programming language if it had a fixed set of functions, and you couldn't add any more. Also, the Turing completeness needs to be usable and purposefully designed— "accidental" Turing completeness doesn't count! - Closed. - The expressiveness, flexibility, and extensibility of the system needs to be fully expressible within the system. Imagine if, in Python, the moment you needed to iterate something, you had to leave Python and write a C++ plugin— No one would use it, and as a programming language, it would barely be useful. Sadly almost every node-and-wire tool, if it is extensible, is not closed. (Allowing extensibility into other systems is permitted, but it must not be necessary in order to express all possible kinds of processing). Many systems fail on this count by making a second, internal system which is not visual— i.e., exposing a textual DSL or even an entirely different (ubiquitously textual) programming language. Note that the external system being "nested" in the presentation of the main system does not constitute the main system being "closed"! For many/most users, crossing that barrier into the outer system is difficult enough that it is equivalent to the external system simply not existing, and the functionality sequestered within being unattainable. - Functional. - This arises from the necessity of node-and-wire. Node and wire systems which model something other than expression composition (like control flow, e.g.), or where nodes have effects on each others' operation that aren't represented by wires, are (fatally) too confusing to reason about. - Well-designed UX. - There is a lot of room for creativity inside the space of this requirement, but many systems fail to get there at all. Some of them fail very badly indeed (e.g. https://lynxtool.com/labview-unfriendly.jpg). Many visual effects node-and-wire systems (like Nuke, for example) have mature and well-designed UI (though there is still much room for innovation or improvement), but fail on basically all of the remaining bullets. |
| 10 comments | |
|
|
Steve Dekorte
2019-10-05 14:23 #
@Kartik Agaram I like the idea of talking in terms of what a project is sacrificing to achieve it’s goal. After all, if a significant trade-off wasn’t required, we’d expect it to be done already. |
| 1 comments | |
|
|
Kartik Agaram
2019-10-05 13:54 #
For fairness, here's my answer. My project emphasizes simplicity because I'm willing to give up compatibility and I chose domains where optimal performance isn't needed. |
|
|
Kartik Agaram
2019-10-05 13:48 #
Looking forward to seeing it! Without seeing it, though, my reaction is, "everyone who came before you said the same thing. How are you going to make sure not to fall into the pitfalls that got them?" How do you answer? :stuck_out_tongue: |
|
|
Tim Babb
2019-10-05 13:45 #
Yep, there are valid reasons to prioritize things other than simplicity, like performance (in appropriate applications) or verifiability, e.g. The point, though, is that I don't think there is a single system on Earth (yet) that is effective at offering the capability of "general purpose programming" with a minimum of cognitive friction, and the big question is "why hasn't that happened yet?" I'm doing my best to remedy that as we speak, though! |
|
|
Kartik Agaram
2019-10-05 13:40 #
@Tim Babb I think if you spoke to the authors of these systems, they'd say they're building the simplest possible system with the constraints they need. Simplicity is a high priority, but it's more important to not lose packets, or to make sure people's games aren't slower than they used to be, and so on. Saying "simplicity is important" doesn't really address these concerns. To talk about simplicity you have to make a case for what one should be willing to give up in exchange. |
|
|
Tim Babb
2019-10-05 13:36 #
But even if many coders revel in working with "puzzle-y" systems, they themselves might still be more productive if the system were cognitively more minimal |
| 1 comments | |
|
|
Konrad Hinsen
2019-10-05 13:36 #
@Steve Dekorte Programs and apps are historical accidents. They are subelements of computing systems, but it’s only the system that matters in the end. A Spreadsheet is such a system. A system necessarily includes code and data, in some form. Focussing on programs means neglecting the data. |
| 1 comments | |
|
|
Kartik Agaram
2019-10-05 13:36 #
@Steve Dekorte you're focusing on mechanisms there. If someone is trying to move a manual process online and extrapolate from it, that feels like category 1. If they're trying to build a game de novo, that feels like category 2. |
|
|
Tim Babb
2019-10-05 13:35 #
@Kartik Agaram My mental model of "simplicity" has aspects of "a small number of distinct concepts" and "a minimum of cognitive effort" needed to use a system/accomplish a given task. I believe many current systems aren't designed with a high priority goal of minimizing mental effort, likely because the designers and intended audience don't see high mental effort as a disadvantage- many even an advantage. Or perhaps the effort extended is invisible because the participants enjoy it. There are other definitions of simplicity which don't fit with that- maybe lines typed, e.g. |
|
|
Steve Dekorte
2019-10-05 13:32 #
It feels like we need a term that effectively removes these questions while still expressing the act of creation. I like “creator”. |
| 2 comments | |
|
|
Steve Dekorte
2019-10-05 13:28 #
How about an artist using an illustration app? It stores the file effectively as a set of drawing instructions. Does this make them “coders”? Does one have to type characters for the drawing instructions on a keyboard vs having the equivalent done by direct manipulation of another representational form in order to be a coder? |
|
|
Steve Dekorte
2019-10-05 13:26 #
For example, at what point does a spread sheet become a program? The moment one writes a custom expression? What if one just hits a button that adds an summation expression in the background? What if they used a template containing summation for the column? |
|
|
Kartik Agaram
2019-10-05 13:24 #
Hmm, I don't think that's right. Or at least you're expanding the meaning of 'content', which feels suspiciously like replacing one nebulous word ('code') with another. |
|
|
Steve Dekorte
2019-10-05 13:22 #
The better our tools, the more the things we create seem like content instead of programs. |
|
|
Kartik Agaram
2019-10-05 13:22 #
@Tim Babb > it feels to me like there is often more weight on making systems that are "clever" or "powerful" over systems that present the simplest possible mental model. I'm asking for clarification on what "simplest possible" means. We want simplicity, yes, both sides agree on that. So we need to move past it to find the disconnect. |
|
|
Steve Dekorte
2019-10-05 13:20 #
@Kartik Agaram Automator also doesn;t express the creation of less dynamic artifacts, such as what we usually think of as content. |
|
|
Kartik Agaram
2019-10-05 13:15 #
You're right that there's two distinct motivations for programming-esque activities: Is there creation in the first? Is it a first class goal or just an accidental by-product? Maybe we need multiple terms. Both may share tools but have disjoint goals. |
|
|
Steve Dekorte
2019-10-05 13:12 #
@Kartik Agaram to me, that sounds like the act of creation is being removed |
|
|
Kartik Agaram
2019-10-05 13:12 #
@Steve Dekorte How about "automator"? (Borrowing from A Deepness in the Sky.) |
|
|
Tim Babb
2019-10-05 13:10 #
@Kartik Agaram what do you mean? @Steve Dekorte Agree with that too. In my system, I am going out of my way to avoid using programming terminology and language, 'cause it carries too much baggage. In this conversation, though, I mean "coder" as "someone with the means to design a computational process" |
|
|
Steve Dekorte
2019-10-05 13:08 #
@Tim Babb Agree but would add that calling creators “coders” might be part of the problem. It implies that creation must involve what we recognize as code. I love how the term “no code” directly addresses this, but it comes with it’s own specification of a solution. Maybe a more open term that expresses the activity without specifying the method would be helpful. |
|
|
Kartik Agaram
2019-10-05 13:08 #
@Tim Babb The simplest possible mental model is null. What's the constraint in the opposing direction, towards complexity? |
|
|
Kartik Agaram
2019-10-05 13:05 #
@Steve Dekorte In the case of monads and type theory I don't think love of complexity is a direct cause. It may be an indirect cause, via overly general assumptions about the importance of one or other attribute of programs for controlling complexity. |
|
|
Tim Babb
2019-10-05 13:03 #
and also a major goal is that many more people be included in the definition of "us"! (meaning coders) |
|
|
Tim Babb
2019-10-05 13:02 #
it feels to me like there is often more weight on making systems that are "clever" or "powerful" over systems that present the simplest possible mental model. I also don't think it's "them vs. us"; I think having simpler mental models is something that everyone could benefit from. |
|
|
Kartik Agaram
2019-10-05 13:00 #
@Steve Dekorte Sometimes, absolutely. |
|
|
Steve Dekorte
2019-10-05 12:57 #
Is it possible that programming movements might sometimes be motivated by this love of complexity? Objects and messages are understandable to a child, but monads and type theory sound much more “impressive”. |
|
|
Kartik Agaram
2019-10-05 12:56 #
Bad faith is also a huge problem. Creating incentives in large companies is a hard going on intractable problem. I mostly avoid it by focusing on open source projects that large companies aren't interested in. Lots of hard problems even there. |
|
|
Kartik Agaram
2019-10-05 12:54 #
Totally. I absolutely agree that there's a lot of chasing complexity for its own sake. And it often happens because we can't imagine a better way. But I want to push back on this us-vs-them narrative (in reverse). It's not like non-techies have all the answers. |
|
|
Tim Babb
2019-10-05 12:51 #
(Or presenting the user the wrong mental model). |
|
|
Tim Babb
2019-10-05 12:50 #
@Kartik Agaram I am thinking more about how there is a kind of "pleasure in learning about lots of minute details" that is common among coders, and people who think that way will tend to create systems that are impenetrable to people who don't think/feel that way. I read what you're saying as more about the difficulty of using a system to create elegance, which I think comes from practice and understanding? But getting that understanding is what's impeded by the system itself being over-complex. |
|
|
Steve Dekorte
2019-10-05 12:48 #
@Tim Babb It took me a long time to realize this. I had assumed everyone preferred simplicity until, in my first job out of school, I was assigned to help someone create a UI for their project. I didn’t understand why we kept arguing over every little thing until I asked him why he insisted on something and he said (paraphrasing) “The way you’re suggesting wouldn’t look as impressive.” and I realized his goal was to impress users, not help them. Suddenly, all the mystifyingly unnecessary complexity in design and function in the world had an explanation. |
|
|
Dan Cook
2019-10-05 12:48 #
My vision a tool that allows you to take how you would want to represent something best for a domain, and make it so. And if you don't like the means by which you change the rules, then you can change the rules about how you change the rules. It can involve code or visualizations or interactions, etc. |
|
|
Kartik Agaram
2019-10-05 12:46 #
Creating complexity is just a natural consequence of not understanding a domain yet. It's not about techies or even people. All sophonts will do it. https://en.wikipedia.org/wiki/Shuhari The key is to allow backing out complexity when it becomes apparent that it's unnecessary. |
| 1 comments | |
|
|
Steve Dekorte
2019-10-05 12:44 #
@Tim Babb Yes, exactly. |
|
|
Kartik Agaram
2019-10-05 12:44 #
@Steve Dekorte I don't think creating complexity is a techie monopoly, going by the crazy things people make with spreadsheets. |
|
|
Tim Babb
2019-10-05 12:44 #
I think there is a whole kind of coder that doesn't exist, because there is no coding platform for them, so they are currently called "non-coders". |
|
|
Tim Babb
2019-10-05 12:43 #
@Steve Dekorte agree— lack of deep empathy from coders to non-coders is a big contributing factor to stagnation. Along those lines, I think there is a big issue with self-selection bias. Coders are precisely those people who have survived the process of learning to code in the environment as it exists, so they will naturally be the ones who are not bothered enough by it to turn away. But they are also the ones who would have to make it into something completely different. |
|
|
Kartik Agaram
2019-10-05 12:41 #
@Duncan Cragg Also spreadsheets tend to be buggier than conventional programs past some scale. See the Reinhardt and Rogoff episode. What do we do about that? |
|
|
Steve Dekorte
2019-10-05 12:39 #
@Duncan Cragg I’d agree that complexity is a major issue. Tech folks, being selected for large short term memories, tend to be relatively blind to it and even seem enjoy experiencing and creating it - maybe because it highlights their talent at coping with it. I suspect another problem is the conceptual rut formed by our language. Terms like “programming” and “coding” get people thinking that creating useful artifacts has to involve steps that look like what they associate with those terms. |
|
|
Kartik Agaram
2019-10-05 12:39 #
@Duncan Cragg spreadsheets are great for many domains, but not for things like device drivers and networking stacks. How do you think about such domains? Are they just out of scope, or is your ideal to fold them into the programming model as well? |
|
|
Dan Cook
2019-10-05 12:37 #
I've edited the readme quite a bit to better clarify what it's about |
|
|
Kartik Agaram
2019-10-05 12:36 #
@Dan Cook that's a very interesting motivation that was not at all apparent to me when I read the Readme a few days ago. @Steve Dekorte I'd definitely be interested in such a thread. We've had a couple in the past but the outcome wasn't very satisfying. I don't have a better idea than to try again, with a fresh prompt. (@Duncan Cragg's spreadsheet is far too structured for such intangible questions as vision and perspective.) |
|
|
Dan Cook
2019-10-05 12:14 #
I've decided that the same even applies to ideas worth exploring, so I'm making this to demo how the current concept of "programming language" puts unnecessary limitations on software, and a way out: https://github.com/d-cook/Circuit |
|
|
Dan Cook
2019-10-05 12:12 #
Well, is we can really be successful in some area, then we should be able to demo it (at least on a small scale) |
|
|
Duncan Cragg
2019-10-05 11:46 #
So you have to deliver a convincing package of both Declarative and Decentralised to non-technical people in order to break us out of this logjam. |
|
|
Duncan Cragg
2019-10-05 11:46 #
The other reason is that we're stuck in a centralised model where the techie giants own our lives, they're not going to easily give away their sovereignty, their walled gardens and closed applications. People literally believe that it makes sense to send a picture to someone standing next to them via another country thousands of miles away! |
|
|
Duncan Cragg
2019-10-05 11:38 #
I think the reason we're stuck is that techies have gone firmly down the hardware-originating imperative route, with data hiding as a tribal principle, and they always, always add complexity (implicitly and unconsciously to ensure their job security) whereas non-techies are happy with declarative programming and overt data (spreadsheets, URLs and HTML, etc). These are "duals" to each other and it's impossible to get techies out of their rut because it literally would turn everything they cherish on its head or inside-out. |
|
|
Steve Dekorte
2019-10-05 11:16 #
wrt specific visions, would folks here find it helpful to have a way to collect member’s (brief) thoughts on their perspectives on FoC, and their project’s vision and implementation? |
| 7 comments | |
|
|
Tim Babb
2019-10-05 11:14 #
I think coding could have had its Xerox/PARC moment 10 or 15 years ago. It seems to me like the sole reason it hasn't happened yet is cultural inertia. |
|
|
Steve Dekorte
2019-10-05 09:27 #
@Steve Krouse “So do we think now is the right time or are we still too early? Can we build the Star / Lisa today?” How can we know unless we have a specific vision? Or can answer the question: “Why hasn’t it happened yet?” |
|
|
Mariano Guerra
2019-10-05 05:16 #
regarding "mourning the visions of the 70s", I think it's a little of fear that the same will happen with new visions, instead of mourning them we should learn why they failed and do better this time. |
|
|
Mariano Guerra
2019-10-05 05:10 #
same with universal serialization in java |
|
|
Mariano Guerra
2019-10-05 05:08 #
imagine someone mailing you a smalltalk object, think of the "possibilities" |
|
|
Mariano Guerra
2019-10-05 05:08 #
another thing is that if your vision never reaches the market you never find its flaws, we had embedable/modular components in the 90s, the most known was activeX, it was a security nightmare |
|
|
Mariano Guerra
2019-10-05 04:59 #
another one: https://en.wikipedia.org/wiki/Itanium |
|
|
Mariano Guerra
2019-10-05 04:55 #
regarding microkernels: https://en.wikipedia.org/wiki/Tanenbaum%E2%80%93Torvalds_debate |
|
|
Mariano Guerra
2019-10-05 04:54 #
My surprise with the star was that the stories I read about the alto was that "the suits" didn't let "the scientists" market the whole alto solution, well, they did let them, and the failures where mostly technical, so the failure at least is shared between both groups. There may be a case of "if we build it they will come" |
|
|
Mariano Guerra
2019-10-05 04:52 #
since we are not starting from scratch, I don't see why we are not in some FoC's vision in 10/15 years, but we have to avoid the same mistakes done in the past by idealists that disregarded the realities of getting a technology adopted by a mass market |
|
|
Mariano Guerra
2019-10-05 04:51 #
being cynic looks really cool, but I just finished reading the dream machine, and reading the visions Licklider had, I think we are almost there since 10 years ago, that's a lot to say in this world for a 30 or 40 year vision |
|
|
Mariano Guerra
2019-10-05 04:49 #
The Alto/Star, Smalltalk, Lisp/Scheme, NeXT, Haskell, BeOS, Microkernels we should learn more about their failure to get adoption |
|
|
Mariano Guerra
2019-10-05 04:47 #
the PC created the market, yes, it was a really bad implementation of the alto, but if you see a mac 20 years later the only part missing was that it wasn't programmable, and all the parts were there to make it happen, it's just that some would like to think that good ideas alone should/will win |
|
|
Mariano Guerra
2019-10-05 04:44 #
I think we are arriving at the macintosh moment, the whole no-code movement some like to hate should be amplified if we want a piece of that growing pie |
|
|
Steve Krouse
2019-10-05 04:22 #
So do we think now is the right time or are we still too early? Can we build the Star / Lisa today? Side question: isn't it crazy that we still mourn and yearn for technological visions from the 70s? Where's our creativity gone? |
| 3 comments | |
|
|
Edward de Jong
2019-10-04 12:56 #
Being too early is the worst thing of all. my father invested his life savings in electric vehicles in 1970, because gas was getting expensive at 35 cents a gallon, and pollution was a problem... oops 50 years later and electric cars in the USA are about 1% market share.... Panasonic used to advertise with the slogan "just slightly ahead of our time", that is the best place to be. I saw a Xerox Star system at Micropro which made the worstar word processor. The Star system cost $50k, way too much for a secretary's computer which is what it was intended for. It worked well, but the idea of giving the secretary the most advanced computer in the company was a non-starter for a status-conscious society that we have. |
|
|
Kartik Agaram
2019-10-04 11:29 #
This looks like a fellow traveler: https://github.com/markdewing/next_steps_in_programming/blob… (Spot the citation to @Konrad Hinsen's work!) |
| 1 comments | |
|
|
Vitorio Miliano
2019-10-04 10:01 #
too early is still wrong |
|
|
Ian Rumac
2019-10-04 06:03 #
exactly, you gotta hit the timing when it can be cheap enough to get to users and users are ready to accept it |
|
|
Ian Rumac
2019-10-04 06:00 #
so close, yet so far |
|
|
Ian Rumac
2019-10-04 06:00 #
just watched this last night |
|
|
Mariano Guerra
2019-10-04 05:32 #
summary: execution, timing, location and luck matter :slightly_smiling_face: |
|
|
Mariano Guerra
2019-10-04 05:30 #
and the newton, and microsoft tablets 20 years ago |
|
|
Mariano Guerra
2019-10-04 05:29 #
same with GeneralMagic: https://www.youtube.com/watch?v=uTdyb-RWNKo |
|
|
Janne Aukia
2019-10-04 05:27 #
For some technologies, there is a perfect time to launch them, when components/networking is cheap enough. I saw somewhere a post that claimed that YouTube was successful because of the timing — when it was launched, networking speeds of home users were starting to be good-enough for video transfer, and server costs had gone down. Earlier video sharing sites came too early. So perhaps Lisa and Star were just a bit too early to be cheap enough for the potential buyers? And Macintosh 128K was barely usable with the limited memory and barely affordable. |
|
|
Mariano Guerra
2019-10-04 03:51 #
interesting that the apple lisa was released 2 years later and failed for the same reasons "The Lisa was challenged by a high price, insufficient performance, insufficient software library" |
|
|
Mariano Guerra
2019-10-04 03:48 #
As revolutionary as these software ideas were, the hardware was equally innovative. When the Star project was begun in 1975, only rudimentary microprocessors existed such as Intel's 8008 and MOS Technology's 6502. |
|
|
Mariano Guerra
2019-10-04 03:41 #
also mentions that xerox took too long to take advantage of what it had, but if this was released earlier it would have been more expensive and even slower (the 8086 was released 3 years before the launch of the star) |
|
|
Mariano Guerra
2019-10-04 03:40 #
yep, but I've read/seen many times people saying that Xerox never saw what PARC created, only took the laser printer, this is proof that they released a complete system before the first successful PC with GUI and the problems were mostly technical |
|
|
William Taysom
2019-10-04 03:37 #
"He who controls the present controls the past." |
|
|
Mariano Guerra
2019-10-04 03:37 #
the start was launched 3 years before the macintosh, the reassons for it's failure from where I found out about it: it was expensive (10x the price of the macintosh), slow, bloated with features and you had to buy the whole kit (printers, ethernet etc) |
|
|
Mariano Guerra
2019-10-04 03:35 #
interesting there, they have a UI with fonts, which I've seen in more than one place attributed to jobs "because he took a calligraphy class at the university" |
|
|
Mariano Guerra
2019-10-04 03:35 #
https://www.youtube.com/watch?v=ODZBL80JPqw |
|
|
Mariano Guerra
2019-10-04 03:35 #
Xerox actually release a product based on the PARC work, in 1981 they released the Star with ethernet and laser printing: https://www.youtube.com/watch?v=Cn4vC80Pv6Q |
|
|
Shalabh
2019-10-03 20:51 #
https://numinous.productions/ttft/ |
| 13 comments | |
|
|
Jamie Brandon
2019-09-30 11:09 #
Show FoC: I started writing up a language I've been brooding over for the past few months - https://scattered-thoughts.net/writing/imp-sets-and-funs/. The first post is not very future-of-coding, but just wait... |
| 28 comments | |
|
|
Garth Goldwater
2019-09-30 10:13 #
https://podcasts.apple.com/us/podcast/the-repl/id1434612191?i=1000444118016 podcast by the founder of red planet labs. hints a bit at a new programming paradigm that continuations somehow fall out of? |
| 4 comments | |
|
|
Shalabh
2019-09-30 09:28 #
ORM isn't silly - its useful and necessary. It's just a bridge between two silos. Yes I agree that it is annoying. The deeper question is why is it necessary at all? I think the database itself is an anti-pattern and maybe we will look back at it one day as quite the silly idea. We want to implement computation processes that span multiple machines, implement persistence, synchrony across large systems. But the way we write these today first requires a lot of model duplication and then requires us to build bridges to connect all the duplicated models. |
| 4 comments | |
|
|
Stathis Sideris
2019-09-30 08:05 #
http://mesh-spreadsheet.com/ - this part in particular: > A ‘real’ programming language? > You can write real programs in a spreadsheet! For example, here’s what Mesh’s own code looks like. > Writing code in a spreadsheet format provides you with immediate feedback and lets you lay out your program on a 2D canvas. I highly recommend trying it. |
| 12 comments | |
|
|
William Taysom
2019-09-29 22:41 #
OR does seem silly. We ended up landing on the O side to great competitive advantage, which is kind of lame given how little it gives you: easily defined virtual columns? I would love to live on the R side if we had a decent, performant, integrated query language! Certainly there's good research and good work out there, but with all the constraints, I'm sad something better hasn't emerged! Would have come work for you @Chris Granger had I thought I would have been an asset. |
| 2 comments | |
|
|
Nick Smith
2019-09-29 21:12 #
This is half where my own headspace has been situated recently. The other half has been on the thorny question of concurrency. Anyone who thinks these topics are important, ping me :slightly_smiling_face: (I have a lot of thoughts and hypotheses) |
|
|
Nick Smith
2019-09-29 21:08 #
So I agree that Object-Relational Mapping is silly and annoying, but that's really due to a mismatch between query languages and programming languages, and the actual DB engines that store physical data and execute those queries aren't really important from a UX standpoint. So the real question is: how can you bring query languages, "persistent data" and "ephemeral data" closer together? Can you have a uniform way to address all three? This is what Eve was doing (IMO). So Cypher is interesting, but wouldn't worry about DB engines. @Chris Granger can speak more to that I guess. |
|
|
William Taysom
2019-09-29 18:56 #
There's also the fact that the last 10% of complete usually includes the fiddly bits that break the other 90%. |
|
|
Pezo - Zoltan Peto
2019-09-29 12:59 #
I want to eliminate the problem of Object-Relational Mapping by not using Relational database for the backend. Relational and in-memory representation are 2 different kind of beasts, I want something less rigid and more flexible then a Relational database: a Graph database. I am constantly looking for the best solution available on the market and to me it seems still Neo4j is the best witch its really cool language Cypher - even with the fact there is OpenCypher available pushed by their team. For first I’d use it just a personal project as a React Native (Typescript) app backend, but later I’d like to use it for my projects. Do you have XP any Graph database? Can you please share it with me? What do you think? |
| 11 comments | |
|
|
Mariano Guerra
2019-09-29 11:55 #
https://en.wikipedia.org/wiki/Fifth_generation_computer |
|
|
Mariano Guerra
2019-09-29 11:55 #
before the AI winter on the end of the 80s there was a short hype on 5th Generation Languages (mostly around prolog) that didn't live up to the promise, and like AI after them they were ignored for a long time: https://en.wikipedia.org/wiki/Fifth-generation_programming_language |
| 5 comments | |
|
|
Wil Chung
2019-09-29 11:38 #
My question: Expert systems sound remarkably similar to Eve. Why did expert systems not take over the world of programming? I was reading Brook’s No Silver Bullets, and his description of an Expert System sounded remarkably like Eve. I understand that rule based systems failed to fulfill their promise in AI, because it’s hard to encapsulate some type of tasks like object recognition in rules--hence the rise of deep learning--so they fell out of favor. Was that the only reason, or are there others? |
| 2 comments | |
|
|
Dan Cook
2019-09-28 10:55 #
I've created a GIT repo for this, with an explanation and a grammar for the "language": https://github.com/d-cook/Circuit |
| 5 comments | |
|
|
Dan Cook
2019-09-27 23:53 #
My personal project is about blurring the lines between code, compiler, and running program; code and editor; programming and user interaction; programming language and regular old program abstractions; etc. I've found it hard to explain what/why/how, but I just realized that I can demonstrate a lot of this by writing the same program several different ways: This will be easier to get up and running than my main project, and be a better demonstration / analogy for what I'm after (e.g. replacing "programming language" with something fluid that your code can change & control, rather than being subject to it -- a whole new level of something being "written in itself") |
|
|
Mariano Guerra
2019-09-27 02:40 #
anyone here used 4GL languages in the 90s? would you mind sharing your experience? if not, do you know of a good resource to have a good overview of 4GL languages? |
| 5 comments | |
|
|
J. Ryan Stinnett
2019-09-26 17:00 #
At the moment, I am working full time in industry and exploring my FoC ideas on the side, which seems to be common among people here. I would like to find a path that allows me to spend a lot more of my time researching and exploring FoC ideas. I could go into academia full time, but that also has overhead of its own. What are other options I should be considering? |
| 14 comments | |
|
|
Garth Goldwater
2019-09-26 12:40 #
just a reminder that this bret victor talk pretty much always deserves a rewatch: https://youtu.be/ef2jpjTEB5U |
|
|
Don Abrams
2019-09-26 05:18 #
If you look as an app as just a member of a larger system, and you want there to be some invariants (such as "people don't die" or "user doesn't feel stupid"), the STAMP model is relatively useful (links in thread so it doesn't blow up #thinking-together) |
| 1 comments | |
|
|
Sol Bekic
2019-09-26 02:49 #
@taowen the title reminds me of this: https://pchiusano.github.io/2013-05-22/future-of-software.html > Software is now organized into static machines called applications. These applications (“appliances” is a better word) come equipped with a fixed vocabulary of actions, speak no common language, and cannot be extended, composed, or combined with other applications except with enormous friction. but the table of contents is different, it's about enterprise. Curious how it applies there, I know this topic more in relation to #of-end-user-programming |
| 4 comments | |
|
|
taowen
2019-09-25 19:01 #
has anyone read this book? https://learning.oreilly.com/library/view/software-wasteland-how/9781634623186/ looks very provoking |
| 3 comments | |
| # |
riot_bridge
2019-09-25 03:07 #
@riot_bridge has joined the channel |
|
|
Garth Goldwater
2019-09-23 14:57 #
@Jonathan Edwards mentioned in #in-boston that there’s going to be a talk on a really cool system that i haven’t seen here before: webstrates.net —going to throw some videos in a thread here |
| 5 comments | |
|
|
Paul Sonnentag
2019-09-23 12:12 #
I’ve started reading a small matter of programming (http://www.amazon.de/Small-Matter-Programming-Perspectives-C…). A compelling thought I found in the book is the idea that the success of end-user programming doesn’t depend on a silver bullet. Many ideas promise to deliver end-user programming like natural language programming, programming by example or visual programming languages, etc. Instead of finding a “magical” solution that solves all problems, the author argues that the main criterion for the success of an end-user programming environment is that users can express their issues with constructs that map well to their knowledge domain. > the basic operations [of the environment] accomplish tasks that users want to do As an example, the sum-function in a spreadsheet application does something meaningful for a person who wants to calculate a budget. In comparison, a for-loop in a general-purpose language is very generic but it isn’t useful on its own. This to me suggests that there is an inherent conflict between the needs of end-users (solving a problem in a specific domain) and the goal of general purpose programming languages (being applicable to a great variety of different domains). My personal interest is more in the camp of building new end-user environments that solve a specific problem domain. I think other projects here in the slack are more aimed at finding better general purpose languages. Do you agree with this categorization and if so in what category would you put yourself? |
| 26 comments | |
|
|
Ian Rumac
2019-09-23 11:55 #
question: what’s your favorite schema/data definition language? for now graphql is my favorite for the simplicity of writing/reading. it’s simple enough to be easily translatable to other languages but it still retains some great features. the details are resolvable on the edges of your system, but the schema is a universal interface between all the clients/servers. |
| 21 comments | |
|
|
Ernest Lee
2019-09-23 06:52 #
https://defkey.com/ |
|
|
Ernest Lee
2019-09-23 06:51 #
theres a website for it give me 5 mins to find it |
|
|
Mariano Guerra
2019-09-23 05:13 #
is there a place where I can find common "shortcut patterns"? what't the common usage of ctrl+click, alt+click, shift+click? I need to add some advanced shortcuts/gestures and I don't want to use one that usually is used for something else |
| 2 comments | |
|
|
Mariano Guerra
2019-09-23 01:00 #
related: https://github.com/nushell/nushell |
|
|
Kartik Agaram
2019-09-23 00:39 #
I misunderstood it when I first shared it. Turns out it only works for commandline programs written in Python. That is unfortunate. |
| 1 comments | |
|
|
Edward de Jong
2019-09-22 23:33 #
gooey should just go through all the linux commands and make a nice interface. that would be very useful. It is time for the command line to die finally. |
|
|
Kartik Agaram
2019-09-22 22:14 #
Another one: https://chriskiehl.com/article/gooey-as-a-universal-frontend |
|
|
Eli Mellen
2019-09-21 18:30 #
Interesting interface here: https://github.com/gchq/CyberChef |
|
|
Pezo - Zoltan Peto
2019-09-21 16:37 #
I am wondering how is it possible to express constraints on the order of Actions with types to make sure all the cases are covered by the compiler. Say Action 1 runs before Action 2A and Action 2B there are 2 cases then: 1,2a,2b 1,2b,2a (eg. in typescript or maybe in something more expressove like Agda/Isabelle/Idris) @prax08 |
|
|
Garth Goldwater
2019-09-21 14:51 #
surprised i haven’t heard of more people using this approach to AI: symbolic backbone + neural nets called as functions for perceptual identification: https://youtu.be/phA4bMjKvCY (theory starts around the 20 minute mark) |
| 2 comments | |
|
|
Jason Laster
2019-09-20 14:38 #
The rough user goal is to provide an alternate UI for the step buttons, that encourages exploration over precise continue to here operations. |
| 12 comments | |
|
|
Jason Laster
2019-09-20 14:38 #
I'm trying to sketch a new call stack timeline inside of Firefox Replay. Does this UI make sense or is it too noisy? |
|
|
Garth Goldwater
2019-09-19 10:00 #
https://youtu.be/43XaZEn2aLc this talk is a masterclass in making academic research clear and practical. even the Q&A section is excellent. blown away |
| 1 comments | |
|
|
William Taysom
2019-09-19 07:27 #
Does seem that firm success is inversely correlated with maximizing immediate shareholder value. Or in other words, you can sell your future to give a payout today. |
|
|
Pezo - Zoltan Peto
2019-09-19 06:52 #
Initially I started to take a note here to ask questions here but I ended up with a blog post. I literally copied the text from this slack box to the other one. https://medium.com/@zolipeto/oo-fp-approach-x-formally-locke… I’d really like to see your opinion, have you ever felt like that? What will happen with Formal Proofs in Software? What is your prediction: what/when is the next related, huge thing? |
| 3 comments | |
|
|
Mariano Guerra
2019-09-19 06:44 #
when protection is interpreted/implemented as isolation from real feedback on one side or "users want faster horses" on the other |
| 5 comments | |
|
|
Mariano Guerra
2019-09-19 06:43 #
I see a tension between "quarter-by-quarter financials" and "research protected from that" |
| 12 comments | |
|
|
Mariano Guerra
2019-09-19 06:43 #
Over the decades, Kay has migrated between advanced research departments in large companies like Apple and HP, more recently via his own LA-based institute, Viewpoints Research. In his talks, he argues that the conditions for critical long-term research that can really benefit humanity rarely happen inside of corporations because of the market’s obsession with quarter-by-quarter financials. To make real progress, research needs to be protected from that. |
|
|
Andreas S.
2019-09-19 03:23 #
" investors who demand geometric growth"... |
|
|
Andreas S.
2019-09-19 03:23 #
https://twitter.com/DavidKlion/status/1092902063997100033 |
| 9 comments | |
|
|
Andreas S.
2019-09-19 03:23 #
BTW: talking about the sustainability of capitalism, since many projects people rely on patron I find this here relevant too: |
|
|
Andreas S.
2019-09-19 01:49 #
1. The medium should be communal and accessible. People should learn and collaborate through awareness, with no assumption of a single, isolated user sitting at a laptop with a keyboard and mouse. (the humane medium , I love it!) 2. The medium should allow people to think with their bodies, because we are more than fingers and hands. (cognitive science!) 3. The medium should expand people’s agency and liberate their creativity; rather than being an app with a limited set of features defined by a corporation and imposed on people (agency and creativity - also what is the relationship of my tech with corporations) |
|
|
Andreas S.
2019-09-19 01:48 #
This is just too good so I will put it out here (outside of the thread) , IMHO everyone here and in general building ( computer technology) should ask themselves these three questions, how does "my tech/innovation" relate to these three: |
|
|
Edward de Jong
2019-09-18 12:33 #
In my project, the overall goal is to produce a notation that is so compact and precise, that it is shorter than the conventional product specification documents, and thus can be the specification and implementation in one. Certainly in smaller projects it holds true, and we'll see how close it gets on larger projects. Classical UML, and formal system design processes are not practical because you can't execute UML, so you end up with an implementation phase than then needs to be checked against a changing specification document; chaos ensues. Having the spec and the program be one thing should be grasped as a big win. |
| 21 comments | |
|
|
Ivan Reese
2019-09-18 10:12 #
This bit feels like a postcard to our community: > Most professional programmers today spend their days editing text files inside an 80-column-wide command line interface first designed in the mid-1960s. And most people don’t even question it. But there is a subculture of programmers — with Victor as its natural center — who believe that programming is in a Dark Age because of this near-universal commitment to the [language + tools + operating system] trinity. We need programming systems that break out of the trinity, that feel alive and fluid and that move closer to the domains most people care about. |
| 25 comments | |
|
|
Ivan Reese
2019-09-18 10:11 #
This is a nice read so far. Definitely not another "Oh wow Dynamicland" post — much more contextually interesting and reflective. It also answers a few open questions I've had, like how CDG were funded and how they were structured in relation to SAP, why the CDG was disbanded, why HARC was disbanded, etc. |
|
|
Ivan Reese
2019-09-18 10:11 #
https://tashian.com/articles/dynamicland/ |
| 24 comments | |
|
|
Daniel Garcia
2019-09-17 12:41 #
A bit sad what people in our field imagine as future of coding https://stackoverflow.blog/2019/09/17/joel-spolsky-clive-tho… TLDR: arduino & stackoverflow teams |
| 3 comments | |
|
|
Steve Dekorte
2019-09-17 12:25 #
Would folks here agree that what most developers spend most of their time on is (roughly speaking) rewriting code that’s been written before instead of implementing logic truly unique to their application? |
| 68 comments | |
|
|
Eli Mellen
2019-09-17 07:49 #
Interesting tool: https://kinopio.club/ |
| 9 comments | |
|
|
Breck Yunits
2019-09-16 15:45 #
(whoops! just saw the thread on #share-your-work )....still learning slac |
|
|
Breck Yunits
2019-09-16 15:40 #
@Paul Biggar where's the best place to send feedback for darklang? do you have a subreddit? looks great! I finally "get it". would love to recommend this instead of firebase/lambdas/gcf/etc.....my nits are on the language and if you might be able to make some slight changes to the keywords to follow the paradigm of "voice driven development" (so ditch underscores, quotation marks, etc) |
| 4 comments | |
|
|
Steve Krouse
2019-09-16 12:29 #
Turns out there are a bunch of more corporate no-code platforms I've never heard of! https://www.g2.com/categories/no-code-development-platforms |
| 4 comments | |
|
|
Eli Mellen
2019-09-16 10:11 #
Found an interesting package for emacs on a conversation on Reddit about how to make something sort of like scratch within emacs -- this isn't that, but thought the concept was interesting. https://github.com/seanirby/rainbow-blocks-bg |
| 1 comments | |
|
|
sandro pasquali
2019-09-16 10:01 #
https://colab.research.google.com/drive/1khUaPex-gyk1wXXLuqcopiWmHmcKl4UP |
|
|
Steve Krouse
2019-09-16 07:30 #
Also, unrelatedly: I can't get this talk about of my mind. It's about how little we know about what works in software development. Is global state really bad? I sure think so but where's the empirical evidence?! If it were so clearly bad, then that badness we detect must somehow show up in reality and can be measured empirically. Is the issue that it's too costly to perform the test? Or that it's actually not as bad as we thing... (Reminds me of the debate I have with my mom about alternative medicine.) https://hillelwayne.com/talks/what-we-know-we-dont-know/ |
| 9 comments | |
|
|
Steve Krouse
2019-09-16 07:27 #
I really enjoyed reading through this: https://twitter.com/geoffreylitt/status/1173346223715053568 |
| 3 comments | |
|
|
Don Abrams
2019-09-16 07:07 #
Hi everyone, I'm poking around at the state of the art in session types <-> linear types (lambda calculus) and wondering if anyone has seen it applied to multi-threaded programming (particularly GPU/CPU). In particular, I'm curious if anyone's seen languages that are biased towards pass by reference or have generation-less GC (which seems like it'd have to be rust-like). |
|
|
Pezo - Zoltan Peto
2019-09-16 06:47 #
Do you know any language/system which builds around invariants and the change of invariants in the evolution of the software? To me Prolog feels somewhat like that with its "relation" like facts/rules - which can be more and more refined. |
| 6 comments | |
|
|
Shalabh
2019-09-15 20:03 #
https://youtu.be/gCWtkvDQ2ZI |
| 16 comments | |
|
|
Garth Goldwater
2019-09-15 11:02 #
at about 10 minutes into this talk i become much more susceptible to @Kartik Agaram’s burn it all down and start again philosophy. memory layout randomness/processor caching etc can introduce performance variability of up to 40% and can lead to things like performance differentials based on which user is logged in (changes environment variables, changes the cache layout) https://youtu.be/r-TLSBdHe1A |
| 2 comments | |
|
|
Breck Yunits
2019-09-15 08:07 #
Any other ones people who are there would recommend? |
| 1 comments | |
|
|
Breck Yunits
2019-09-15 08:06 #
This was a great SL talk: https://www.reddit.com/r/ProgrammingLanguages/comments/d4k7f… |
| 2 comments | |
|
|
Nick Smith
2019-09-15 03:14 #
There is some work like this being done in the realm of version control, but I've not seen it applied to program execution. |
|
|
Nick Smith
2019-09-15 03:09 #
Type systems typically allow reasoning about the shape of data structures, and of functions that consume/produce them. Has anyone seen any type systems / theories for describing the shape and compatibility of changes (patches) to data structures? You could use this to reason about whether two operations on a data structure could be reordered, for example. You could also use it to reason about replicated state. |
| 7 comments | |
| # |
William Taysom
2019-09-14 19:12 #
raises hand at some point in the past. |
|
|
Garth Goldwater
2019-09-14 18:44 #
does anyone in this group know any newlisp or picolisp enthusiasts? |
|
|
Garth Goldwater
2019-09-14 13:58 #
nvm the videos are going up crazy fast |
|
|
Garth Goldwater
2019-09-14 13:32 #
i’ve been enjoying @hillelogram’s strangeloop livetweets—any other spots i should be following for the conference? |
|
|
John Austin
2019-09-12 18:43 #
Anyone here at StrangeLoop? |
| 12 comments | |
|
|
Garth Goldwater
2019-09-11 13:11 #
https://twitter.com/hernanwilkinson/status/1171866737345736704?s=12 |
| # |
Alex Miller
2019-09-11 09:52 #
Those interested in the future of coding may also be interested in the past... Just wanted to drop a note about the upcoming HOPL IV conference (history of programming languages), chaired by Guy Steele and Richard Gabriel in London, June 14-16, 2020. This is the 4th edition of a series started in 1978 and run every 10-15 years so should be a special event. I am not involved and have no stake, just spreading the word. https://hopl4.sigplan.org (prior: http://research.ihost.com/hopl/HOPL.html) |
| 2 comments | |
|
|
Brendan Zabarauskas
2019-09-10 17:39 #
Can anyone think of any examples of data structure visualisers that allow you to change the presentation of the nodes of the data structure? Like ‘tree’, ‘table’, ‘xml’, ‘bytes’, ‘image’. I have some ideas for a binary data visualiser like this (driven by a data description language I’m making), I’m just curious about prior art on this kind of thing. Examples don’t have to be for binary data formats specifically though. It’s a UI I swear I’ve seen in the past… |
| 18 comments | |
|
|
Doug Moen
2019-09-10 16:04 #
Local State is Poison https://awelonblue.wordpress.com/2012/10/21/local-state-is-poison/ |
| 16 comments | |
|
|
Kartik Agaram
2019-09-09 09:34 #
I may be misunderstanding you, @Gary Trakhman. Building languages in themselves is (sadly) very common. Gcc is in C. The ~Hotspot~ JikesRVM compiler for Java is built in Java. Lisp is particularly prone to this sort of misguided fascination with recursion since McCarthy's original paper showed a one-page Lisp interpreter written in itself. The security risks of building languages in themselves have been known since Ken Thompson's Turing Award lecture in 1977. And such implementations are also hard to understand. The answer to "what is the spec/semantics?" is often "whatever the code says". But what does the code do? You end up with a circular dependency. Both these issues are also present with mutual rather than self recursion, like if you built Python in Ruby, or vice versa. Modern software, obsessed with interfaces and convenience, fails to attend to implementation properties and long-term externalities. My Mu project builds each layer of abstraction strictly out of lower layers. It's a slow, inconvenient process, but not as slow or inconvenient as I'd feared going into it. Prototyping languages is a great thing to do, but we should all be concerned with the depth of the dependency tree and the presence of cycles in it before we deploy something to production. It's a very implicit and pervasive form of technical debt. |
| 21 comments | |
|
|
Gary Trakhman
2019-09-09 08:34 #
the clojure compiler is java, the clojurescript compiler is JVM-clojure |
|
|
Gary Trakhman
2019-09-09 08:33 #
the first one wasn't I guess |
|
|
Gary Trakhman
2019-09-09 08:33 #
right, but the compiler is written in wisp :slightly_smiling_face: |
|
|
Eli Mellen
2019-09-09 08:33 #
if that makes sense |
|
|
Eli Mellen
2019-09-09 08:33 #
well, wisp itself is just js, so what is being required is the compiler, not wisp code itself |
|
|
Gary Trakhman
2019-09-09 08:32 #
I don't think that's usual for lisps |
|
|
Eli Mellen
2019-09-09 08:31 #
That is correct! it is very compact |
|
|
Gary Trakhman
2019-09-09 08:28 #
that's fun.. |
|
|
Gary Trakhman
2019-09-09 08:27 #
"devDependencies": {
|
|
|
Gary Trakhman
2019-09-09 08:24 #
the makefile bottoms out to assuming wisp has been compiled already |
|
|
Gary Trakhman
2019-09-09 08:24 #
it looks like wisp is a self-bootstrapping compiler, am I reading that right? |
|
|
Gary Trakhman
2019-09-09 07:43 #
Clojurescript is nice in principle but it's a long way away from being something a JS dev might pick up cold. The tooling is extremely complex and heavyweight IMO. I think the next step is doubling down on self-hosted CLJS, but now we have a few fragmented implementations for various cases. |
| 3 comments | |
|
|
Eli Mellen
2019-09-09 07:18 #
I recently came across an interesting, clojure-like dialect of JS called WISP. it is very similar to clojurescript, and it seems that development was abandoned once clojurescript became a thing, but as a toy language for noodling around it, I think it has some benefits to clojurescript (namely that it works very well with existing JS tooling, and getting up and running with it is just the matter of placing a script tag, rather than needing to fuss around with setting up a clojure dev environment). https://github.com/Gozala/wisp/blob/master/doc/language-essentials.md |
| 1 comments | |
|
|
Felix Kohlgrüber
2019-09-08 23:57 #
Someone on twitter shared a link to https://github.com/forest-lang/forest-compiler, which sounds really interesting. There's also a great conversation in the Issues here: https://github.com/forest-lang/forest-compiler/issues/2 |
| 8 comments | |
|
|
Daniel Garcia
2019-09-08 21:18 #
:heart: New episode of Tools & Craft out https://www.youtube.com/watch?v=3HPriE2a5yc |
| 1 comments | |
|
|
Steve Dekorte
2019-09-08 07:59 #
@magicmouse94937 That’s how I feel about FP. Though no one should take either of our statements of opinion as an argument. |
| 85 comments | |
|
|
Edward de Jong
2019-09-07 11:46 #
The 42 language is a bit of a mess. It is mired in the OOP universe, which to me is an obstacle to progress. |
|
|
Daniel Garcia
2019-09-06 21:11 #
This explorable explanation is amazing! https://twitter.com/minutelabsio/status/1164888771172753411 |
|
|
Garth Goldwater
2019-09-06 11:55 #
anyone seen anything about this extremely obscure language i’ve stumbled across: http://l42.is/ |
|
|
Andreas S.
2019-09-05 01:25 #
What do you think about this? Is it social media? Is it the old media? Where does all this hate and impatience/non empathy come from? Can we do better? What is "our" role it? Thank you for sharing your thoughts! |
| 11 comments | |
|
|
Andreas S.
2019-09-05 01:23 #
I think this is really a broader issue and somehow this piece helped me a bit to understand it: https://medium.com/s/world-wide-wtf/memetic-tribes-and-cultu… in particular this overview from the article: https://docs.google.com/spreadsheets/d/11Ov1Y1xM-LCeYSSBYZ7y… |
|
|
Andreas S.
2019-09-05 01:22 #
I think I have a difficult topic but I still want to try bring it up. It is about how the culture of communication became so difficult that, I guess that even in the "IT-Space" we can feel its impact. How did come to this? That people are so hateful at each other that conflict resolution seems impossible. Instead of collaboration there are screams of outrage and disrespect. As two examples I want to quote the recent John de Goes Event https://twitter.com/jdegoes/status/1168991784745230336 but also this event from the ethereum community: https://twitter.com/lorecirstea/status/1167747800626618368 |
| 3 comments | |
|
|
Michael Dubakov
2019-09-04 02:26 #
No-code Revolution. Why Now? https://medium.com/fibery/no-code-revolution-why-now-2f2bd914cb05 |
| 23 comments | |
|
|
Pezo - Zoltan Peto
2019-09-03 16:14 #
@Paul Biggar May I ask what darklang learns from Erlang and its ecosystem? :) |
| 4 comments | |
|
|
Alex Miller
2019-09-03 11:43 #
I'm reading Range by David Epstein right now (which is fantastic) and he talks about the benefits of cross system/genre thinking like this (as an aid to solution finding) |
| 1 comments | |
|
|
Edward de Jong
2019-09-03 02:15 #
Some good points, although he glosses over Prof. Wirth's work. I was a disciple of Prof. Wirth and used his Modula-2 language, perhaps one of only 100 people in the USA making products with it against the C juggernaut. The problem with language selection is 1) inertia is the most powerful force in the universe, and 2) it is an intrinsically conservative part of the brain to acquire and repeat a language, we are not wired to learn new ones, but keep using the current one, 3) humans are a herd animal, and seek safety by copying the majority, with prevents change. |
|
|
Kartik Agaram
2019-09-02 19:40 #
Today's computers are cars rather than bicycles for the mind https://www.cs.kent.ac.uk/people/staff/srk21/research/talks/… |
| 5 comments | |
|
|
Stathis Sideris
2019-09-02 13:37 #
https://twitter.com/rikarends/status/1168243060586819584?s=21 |
| 2 comments | |
|
|
Garth Goldwater
2019-08-31 14:10 #
anyone know of any programming models that explicitly include a first-class concept of a program’s user? |
| 27 comments | |
|
|
Breck Yunits
2019-08-31 09:04 #
For the record @Kartik Agaram it was @J. Ryan Stinnett’s idea :slightly_smiling_face:. His post was the first thing I saw when I entered, so being a slack noob I thought that was what I was also supposed to do :slightly_smiling_face: |
|
|
Kartik Agaram
2019-08-30 17:21 #
Meta thread on the poll. Place for comments rather than voting. |
| 13 comments | |
|
|
Kartik Agaram
2019-08-30 11:35 #
Poll: What other forums do you habitually hang out on, type out on the browser without realizing it, etc.? I want to keep the list open-ended, so let's try to keep the comments under this thread a simple list of options that people can :thumbsup: (Thanks @breck7 for the idea.) |
| 17 comments | |
|
|
Breck Yunits
2019-08-30 08:32 #
:four: |
| 4 comments | |
|
|
Breck Yunits
2019-08-30 08:32 #
4 |
| 6 comments | |
|
|
Pine Wu
2019-08-29 11:17 #
/poll "How do you position your FoC interest in your work/life?" "Working on my FoC pursuit full-time in industry" "Working on things related to my FoC interest in industry" "Working in industry, FoC pursuit on the side" "Working on my FoC pursuit full-time in academia" "Working on things related to my FoC pursuit in academia" "Studying in academia, FoC pursuit on the side" "Not in industry/academia. Just pursuing my FoC interest" |
|
|
Justin Blank
2019-08-29 07:45 #
Thinking about projectional editors, or refactoring tools generally…I wonder if the steps they take ought to be visible during code review. We’ve done several automated refactorings recently, and we’re left putting comments in the PR saying “we used tool X”. |
| 2 comments | |
|
|
Stefan Lesser
2019-08-28 07:59 #
The new middle is missing, because it’s taking the picture. ;-) |
|
|
Gary Trakhman
2019-08-28 07:33 #
:heart: my quest ($400 ping pong machine) |
| 6 comments | |
|
|
William Taysom
2019-08-28 07:33 #
Dynamicland? At least its current incarnation has colorful dots. |
|
|
Mariano Guerra
2019-08-28 07:32 #
(not yet) |
|
|
Mariano Guerra
2019-08-28 07:32 #
the middle is the room? :thinking_face: |
| # |
William Taysom
2019-08-28 07:31 #
What is the new black? |
| 1 comments | |
|
|
William Taysom
2019-08-28 07:30 #
Except the middle is missing and everything has turned black... |
| # |
William Taysom
2019-08-28 07:28 #
Smart, eh? |
|
|
William Taysom
2019-08-28 07:27 #
Looking at gadgets splayed around the house, I'm reminded of this picture... |
|
|
Andreas S.
2019-08-25 11:11 #
https://twitter.com/emi1ypi/status/1165348474990321665?s=21 |
| 5 comments | |
|
|
Shalabh
2019-08-24 16:20 #
In most programming languages, when you define a composite type (e.g. class User {string name}), you define both - the business shape ('a user entity has one name') and also the memory layout used to represent it internally. Are there any languages that let you define these separately? |
| 19 comments | |
|
|
Shalabh
2019-08-24 15:56 #
Uniform references (~Python) are less incidentally complex than value/reference/pointer variants (~C++) because you don't worry about which variant of syntax and semantics to deal with, when working with any business model object. |
| 1 comments | |
|
|
Doug Moen
2019-08-24 12:10 #
The "mutable variables and immutable values" model is less complex than the "implicit references to mutable objects" model. See replies for more information. |
| 16 comments | |
|
|
William Taysom
2019-08-23 19:27 #
(function pointers, I'm looking at you) as well as the call by value and call by reference distinction, which doesn't exactly go away in reference-to-objects languages. |
| 15 comments | |
|
|
William Taysom
2019-08-23 19:26 #
Having recently helped someone with CS homework involving C, I had to pull the memory model of pointers to addresses out of my mind's cold storage, which suggests that the pointer model is incidental. It is, of course, similar to the model of references to objects, but with the conceptual overhead of pointer arithmetic and dereferencing, let alone the gnarly typing syntax |
|
|
Dan Cook
2019-08-23 13:18 #
Monads are like Schrödinger's cat! (Or the container for it, anyway) |
| 2 comments | |
|
|
nicolas decoster
2019-08-23 13:10 #
Is that count for you? Because the first can be seen as domain specific languages and maybe you meant comparing text languages? |
| 1 comments | |
|
|
nicolas decoster
2019-08-23 13:09 #
In the context of audio/music programming, box and arrow programming à la PureData and MaxMSP is less incidentally complex than text programming of WebAudio with JavaScript. |
|
|
Ivan Reese
2019-08-23 10:52 #
What are some of your favourite examples of differences between languages, tools, paradigms, etc that reduce incidental complexity? Ideally, examples that aren't too broad (eg: "FP is less incidentally complex than OO") nor too narrow (eg: "Using HAMTs is less incidentally complex than other persistent immutable data structures"). No need to go super in depth, feel free to just spew "A is less incidentally complex than B, because X." at me. Based on the examples I might ask some follow-up questions if needed. Thanks! |
|
|
Mariano Guerra
2019-08-23 06:44 #
https://www.youtube.com/watch?v=0nbkaYsR94c |
|
|
Konrad Hinsen
2019-08-23 03:15 #
Is anyone aware of work on what I'd call "evolution-safe programming"? The question is how one can write software in such a way that every part in every layer can evolve freely without breaking everything depending on it. There are some aspect of this in [Dark](https://darklang.com/) (recently discussed here), and in [Unison](http://unisonweb.org/), but is there any work on theoretical foundations or practical evaluation of proposed approaches? |
| 13 comments | |
|
|
Edward de Jong
2019-08-23 01:08 #
The massive online multiplayer games require extremely clever networking stacks, and there are people who make their careers out of doing these stacks because when you have 100k+ people on one server you really watch the bits, and minimize transfer. There are some amusing rants on YouTube from Joe Armstrong during his lectures where he goes off on JSON, and how he practically pops a blood vessel thinking about how hard they worked at Ericsson to keep the network overhead, only to see ascii being passed around. |
|
|
Edward de Jong
2019-08-23 01:00 #
For my first version, which is supposed to permit easy construction of multiplayer games, i am doing centralized tracked mutable state, with automatic sync during screen refresh. I don't want to try doing a real time first person shooter, because that requires full duplex communication, and for that i would prefer to have UDP packets, and unfortuantely web browsers ban UDP, you have to use TCP, which is slower and wasteful with all the ACK packets. I come from the telephony world where all the voice packets are UDP and it works great. So efficient. |
|
|
Edward de Jong
2019-08-23 00:57 #
What i mean by collecting state transition logic, is what they did in the Simula language. Unlike Java which has a tendency to disperse state transition logic across different source code files, because each class might have some logic associated with it, my assertion is that when the state logic is collated into one central place it is far easier to understand it. One of the toughest parts of learning someone else's code is understanding what the states are, and what causes the machine to go from one state to another. In complex systems it can be extremely hard to figure out, especially looking at a static system. Usually you have to fire up the system and put in tracing to see how it behaves. Debugging incorrect transitions is one of the reasons why reversible systems hold such great promise. |
|
|
Duncan Cragg
2019-08-23 00:57 #
Eventual consistency, etc |
|
|
Duncan Cragg
2019-08-23 00:57 #
Highly distributed but highly visible |
|
|
Duncan Cragg
2019-08-23 00:56 #
My solution is to make state out in the open unlike OOP |
|
|
Duncan Cragg
2019-08-23 00:54 #
I prefer to take a very loose approach to state: best efforts, push when you want, poll when you want (as in my Object Net work) |
|
|
Duncan Cragg
2019-08-23 00:53 #
Global sync seems to me to be fundamentally over rigid and very much unlike reality. Indeed what you say looks very much like the real world to me, with people making best estimates of the state of things in the quickest way to hand! |
|
|
Tom Lieber
2019-08-22 18:12 #
I work with @magicmouse94937’s so-called boring accounting state machines day-to-day (they are boring :). But even the simplest is governed by events that are coming from devices all over the world, aggregated in servers all over the world, fed into streaming or batch event processors… To answer “What state is a user in?” with the value that’s stored in a particular database misses so much. Sometimes the value isn’t anywhere, because it’s defined as the output of a computation based on other states. People generally choose whichever version of the answer is nearest at hand. “Let’s read it from here instead of there because this data source is updated more frequently.” Every read of a state is an estimation process. So I have a hard time imagining what “collecting state transition logic” could possibly look like. I feel like the scope has to be exceedingly small for that idea to make sense. Even at the app level, you have event loops and synchronization and subsystem boundaries introducing propagation delays that make it difficult to say what a state is. (Race conditions!) But maybe you just need an exceedingly homogenous programming environment along the lines of Unison to make those big systems seem small? Or Eve-like global synchronization? |
|
|
Nick Smith
2019-08-22 17:59 #
@magicmouse94937 I agree with what you said, however what I'm trying to do here is find an existing formalization of these kinds of complicated state machines. Labelled Transition Systems are apparently exactly that, for programs that have a finite set of states (bounded memory use / non-recursive data types). Symbolic Transition Systems appear to handle infinite-state programs. Academics have taken these systems and built programming languages on top of them (such as the class of languages called "process calculi" or "process algebras"). We might be able to learn something from these languages. |
|
|
Gary Trakhman
2019-08-22 17:03 #
sure, regexes are hard to read, but they're a really concise form of a state machine |
|
|
Gary Trakhman
2019-08-22 17:03 #
willy-nilly dispersal of state information, that's how I feel about fluent, functional regex APIs :smile: |
|
|
Dan Cook
2019-08-22 16:57 #
That depends on what you mean by "OOP", then. I can think of at least 3 different categories or definitions :) |
|
|
Tudor Girba
2019-08-22 12:38 #
We should not equate OOP with classes in Java, though :slightly_smiling_face: |
|
|
Kartik Agaram
2019-08-22 11:54 #
The criticism of OOP is valid. An FP aficionado may push back that while state machines are fundamental, they don't have to rely on mutable state. |
|
|
Edward de Jong
2019-08-22 11:01 #
This is one of the achilles heels (there are multiple) of the OOP paradigm, in that it does not collect related state transition logic. |
|
|
Edward de Jong
2019-08-22 11:00 #
It is the willy-nilly dispersal of state information that makes some programs hard to read. Many times the spec for a product has the state nicely listed in a concentrated table, but when implemented, many languages like Java disperse the state logic into little bits, one chunk per class, with maybe 100 classes, and then it makes it super hard to understand the mechanics of the machine. |
|
|
Edward de Jong
2019-08-22 10:58 #
Almost every program of any complexity has multiple finite state machines, that carry state data and do computations during the transitions. Only in textbooks where they boil things down to the simplest possible explanations do they omit these. That is why shared mutable state is so prevalent. In most languages you create some variables, and either use a switch statement or have a bunch of functions in some kind of array structure that dispatches to the logic for the state on each event. In my Beads language i included a finite state syntax to make it much clearer to the reader about the logic, as it centralizes the state transition logic, but that is a nicety and not essential. Most computer games are gigantic state machines with fancy artwork. Most experienced programmers do state machines in their sleep, they are so common. Business products typically have fewer, and more boring states, like paying on time, 30 days late, 90 days late. That's about as exciting as it gets in accounting, state-wise. |
|
|
Felix Kohlgrüber
2019-08-22 03:38 #
Visual Embedded Rust: https://medium.com/@ly.lee/visual-embedded-rust-programming-… |
|
|
Nick Smith
2019-08-22 00:09 #
Does anyone have any knowledge of labelled transition systems or finite state processes (or LTSA)? I just discovered them whilst browsing concurrency books. They seem to be a generalization of state machines that can actually hold data (program state) within the transitions and do computations in the course of transitioning. I'm thinking they might be a decent means of reasoning about program behaviour (specifically, this book says they're good for reasoning about concurrent processes). |
|
|
Edward de Jong
2019-08-21 16:38 #
The late Joe Armstrong was experimenting with making everything a chunk in a universe of chunks, and each chunk had a SHA hash as its address, and then everything was immutable, and you could never break a link in a web page. He has a bunch of lectures about it. He did not like file systems either. When you build a languages like Erlang on top of the concept that things are immutable, a filesystem is a glaring violation of that principle! |
| 21 comments | |
|
|
Kartik Agaram
2019-08-21 16:31 #
File systems (and much else) should be databases (1995) http://okmij.org/ftp/papers/DreamOSPaper.html > This paper is an attempt to imagine what an OS would look like and how it would work if looking for a word 'foo' in something and deleting/closing/stopping this something, -- be it a paragraph of text, a network connection, a subscribed newsgroup, a process -- would all require roughly the same sequence of mouse clicks or keystrokes, and would be understood and interpreted in the same spirit by the operating system. > ASCII configuration files abound, for a very simple reason: they can be modified with any text editor from ex and edlin upwards, and can be viewed and created even without an editor, with a cat command. These two paragraphs feel contradictory. Text files already provide roughly the same sequence of operations to update. Can anybody tell what the article expects the benefits of databases to be? I see something about the CPU cycles to parse text files. But that seems to perversely ignore the complexities of using a database. Another take: your file system already has much that looks like a database with journalling and so on. Mission accomplished? Personal note: I've looked at several papers this week and been tempted to go implement them. This is a big shift compared to the past 5 years, while I've been slowly putting the foundations of the Mu computer together. It feels like a weight has been lifted off my shoulders, and I can start prototyping new ideas again. Anybody want to play with adding a stupid database before a file system? The Mu computer currently has no access to its local file system, so we have a blank slate to play with. |
| 3 comments | |
|
|
Duncan Cragg
2019-08-21 00:29 #
https://pbs.twimg.com/media/ECatC6GXYAATLZW.jpg |
| 3 comments | |
|
|
Duncan Cragg
2019-08-21 00:28 #
|
| 1 comments | |
|
|
Daniel Hines
2019-08-20 14:28 #
Can someone familiar with the concept of stratification in logic programming explain it to me, or point me to a good explanation? My textbook's explanation was a little dense for a noob like me (@Michael Arntzenius?). I see it's tied up with the idea of a level mapping, but I don't have a good intuition of what a level mapping is. |
| 21 comments | |
|
|
Duncan Cragg
2019-08-17 15:18 #
Although it would be polite to mention if you make changes to another's record. :smile: |
|
|
Duncan Cragg
2019-08-17 15:17 #
There have been some structural changes in the project comparison table, and I can't easily use the history to see what exactly and by whom, so please check your project is still accurately represented: https://docs.google.com/spreadsheets/d/12sTu7RT-s_QlAupY1v-3… And don't forget that it's wiki-like, so if you're not happy, don't get cross, change it to what you want! |
| 3 comments | |
|
|
Ivan Reese
2019-08-17 13:42 #
Folks who are working on languages/tools with some sort of rewind / reverse execution / reversible computing feature... what are you doing, how are you doing it, and why? (Edit) Additionally: if you are doing the above, do you allow the running system's data or code to be edited? For instance, some traditional debuggers allow you to edit the state of variables when execution is paused. If you offer anything like that, how does that interact with your rewind/reverse functionality? Does rewinding undo changes to data? How about code? Or does rewinding execute in reverse, using the just-edited code as if it had always existed? Bonus round: In traditional debuggers for some languages, you can insert some sort of "pause / debug" statement into your code that pauses execution and initiates debugging. In your reversible language, can user code control the flow of time backward/forward, or anything similarly wild like that? If so, what's your philosophy / approach to handling paradoxes? |
| 27 comments | |
|
|
Srini Kadamati
2019-08-17 08:47 #
neat post: https://www.sjm.io/post/forgotten-ideas-in-computer-science/ |
| 1 comments | |
|
|
James Koppel
2019-08-16 22:47 #
Hi all! I’m currently looking for examples of large refactorings people have done/want to doo in open source projects for our paper on a new code search tool. The special part of this tool: You can search for “x >= low && x < hi” and it will also find “x < low || x >= hi”. More generally, it can find all kinds of semantic variants of whatever you’re searching for, even if it’s spread out over 20 lines, even if you add lots of indirection |
| 2 comments | |
|
|
Fraser Greenlee
2019-08-14 14:25 #
Way to read stories instead of documentation https://storytime.dev |
| 4 comments | |
|
|
Elena Glassman
2019-08-13 09:48 #
Don’t need to submit to participate, and the deadline if you or your students want to submit is flexible. |
|
|
Elena Glassman
2019-08-13 09:48 #
Hey folks! There’s a workshop at ACM UIST that I’m co-organizing that you’re all invited to :slightly_smiling_face: It used to be at SPLASH but this year we moved it to a technical HCI conference to get fresh ideas and attendants, but still retain its PL roots and technical rigor. http://plateau-workshop.org/ |
| 2 comments | |
|
|
Duncan Cragg
2019-08-13 00:53 #
Looking forward to more details and examples about programming Beads, @magicmouse94937! Meanwhile: http://www.e-dejong.com/blog/2019/6/10/the-beads-system-in-10-minutes |
| 3 comments | |
|
|
Edward de Jong
2019-08-12 23:42 #
Beads is a shared mutable state system, event-driven, and in a client/server type of product, one subscribes to the subset of the shared state, and the other subscribers get updated automatically. Some people call this a publish/subscribe model, which goes back to MS Windows; however there are some differences. Note that this is not the "actor" model, which the late great Joe Armstrong held a dim view of. There is a fascinating youtube debate between the 3 great instigators where they got together and reviewed the end results of the 3 different approaches they had tried. https://www.youtube.com/watch?v=37wFVVVZlVU |
|
|
Jonathan Edwards
2019-08-12 11:18 #
We now have a channel for #of-end-user-programming |
|
|
Steve Peak
2019-08-12 00:59 #
We are looking for beta testers of the first polyglot, cloud-native programming language for gluing business-logic via microservice. You can build pretty cool applications in a fraction of the time and deploy with zero-devops into Kubernetes. Checkout https://storyscript.io — Ping me directly to ask questions and join beta (just need your email+gh-handler). Cheers! |
| 3 comments | |
|
|
Nick Smith
2019-08-12 00:16 #
Does anyone know of languages that are built around event-driven concurrent transactions on shared state? It sounds like I'm just asking for a database engine, but I'm looking for something more general purpose. Take the OO concept of "everything is an object" and change it to "everything is a transaction" as a starting point. Supporting concurrency is the key thing here, otherwise I would be basically describing an actor (whose execution is not individually concurrent). |
| 14 comments | |
|
|
Steve Krouse
2019-08-10 09:26 #
I've been wanting this paper to exist for some time now! https://arxiv.org/abs/1908.00898 |
| # |
David Piepgrass
2019-08-10 07:09 #
I wanted to try Idris, but got a math-challenged version |
| 2 comments | |
|
|
Benjamin Gudehus
2019-08-08 18:12 #
Links to papers, slides, and code (MIT licensed) are here: https://querycombinators.org/. And a direct link to the main paper as PDF (using the German mirror of arXiv; for some reason the other site is down for me, and Wayback Machine does not mirror PDF files of the arXiv, might be a SSL certificate problem): http://de.arxiv.org/pdf/1702.08409 |
|
|
Benjamin Gudehus
2019-08-08 18:04 #
JuliaConf 2019 talks were uploaded to YouTube. Here I actually heard the first time about data.frames and data.table, after I already made some simple experiments with a tabular data structure last week to visualize intermediate steps of data transformations; turns out in seems the data science community is already using this for ages. There’s a talk about DataKnots.jl and “query combinators” that are intended to ease communication between staff in clinical research. https://www.youtube.com/watch?v=zr4D3-rf-jg |
|
|
Ivan Reese
2019-08-08 15:35 #
A good twitter thread full of debug visualizations. https://twitter.com/kenpex/status/1159498286664785921 |
| 4 comments | |
|
|
Duncan Cragg
2019-08-08 01:05 #
Just realised people are still filling in my spreadsheet with their projects: https://docs.google.com/spreadsheets/d/12sTu7RT-s_QlAupY1v-3… :smile: This is now becoming a very useful resource, I think - useful to me at least! Feel free to update and/or complete your column, or that of someone not on this Slack. |
| 32 comments | |
|
|
Pezo - Zoltan Peto
2019-08-07 06:06 #
https://arend-lang.github.io/ |
| 5 comments | |
|
|
Andreas S.
2019-08-07 05:32 #
David MacIver on social tech technology: https://twitter.com/drmaciver/status/1158696204324265985?s=21 |
|
|
Adriaan Leijnse
2019-08-05 12:55 #
You're welcome, looking forward to meeting you there :slightly_smiling_face: |
|
|
Steve Krouse
2019-08-05 07:02 #
In terms of conferences this month in Europe, I just got my tickets to BobKonf in Berlin (featuring Conal Elliot and @Adriaan Leijnse, thanks Adriaan for the heads up) and PPIG (I know @Jonathan Edwards is also going) in Newcastle. Anyone else attending? Come join if you can! https://bobkonf.de/2019-summer/program.html https://www.eventbrite.com/e/ppig-2019-registration-65130919333 |
| 2 comments | |
| # |
Steve Krouse
2019-08-05 03:31 #
This is just approximate (there's a known bug) but I wrote a script to pull all the links from all Slack messages. Here are the top links mentioned by number of mentions: |
| 4 comments | |
|
|
Edward de Jong
2019-08-04 15:38 #
With 1000 programming languages to choose from, how to rank them? One important quantity that can be measured is MTTR BSOTTA -Mean Time To Repair By Someone Other Than The Author. This is what killed APL, LISP and FORTH; high MTTR scores. https://www.e-dejong.com/blog/2019/8/4/a-very-important-qual… |
| 7 comments | |
|
|
Pezo - Zoltan Peto
2019-08-04 08:37 #
This is so cool! Maybe you are already aware of that. Topic: FP & Homotopy Type Theory https://www.youtube.com/watch?v=caSOTjr1z18 |
|
|
Andreas S.
2019-08-03 14:00 #
Update Information on Nile (STEPS- Project VPRI) repository: https://github.com/damelang/nile/issues/3#issuecomment-517508949 |
|
|
Andreas S.
2019-08-02 23:21 #
Unison Alpha: https://twitter.com/unisonweb/status/1157375787059818504?s=21 |
|
|
Nick Smith
2019-08-02 17:19 #
It also really depends on what insights you're trying to reveal. State transitions are useful to reveal "how did this state occur", but some kind of aggregation is probably better to understand "what were the values of this variable over the course of execution". |
|
|
Nick Smith
2019-08-02 17:17 #
(Possibly alongside other supplementary views, though) |
|
|
Nick Smith
2019-08-02 17:17 #
I think the answer to that question depends upon the semantics of the language that the visualisation is being designed for. In a language that follows the Elm architecture, a timeline is just a sequence of state transitions, so that's what you'd visualise. |
|
|
Ivan Reese
2019-08-01 23:59 #
:clock1::roller_coaster: If you were going to create a "timeline" view that showed the progress of execution of a program through time, what would you make it look like? |
| 36 comments | |
|
|
Steve Dekorte
2019-08-01 18:31 #
Are there any yearly conferences that are closely related to FoC? |
| 5 comments | |
|
|
Drewverlee
2019-08-01 17:08 #
Anyone want to do a group watch and discussion of some of the "curry on" conference talks? |
| 1 comments | |
|
|
Steve Dekorte
2019-08-01 15:36 #
I'm finding it a bit daunting to catch up on this channel's history. Is there a good web page that summarizes the current ideas on interesting directions in "programming" UIs? |
| 44 comments | |
|
|
Mariano Guerra
2019-08-01 08:19 #
/poll "In your new language, what will be true when evaluating conditions?" "only the true value" "anything not false" "anything not falsy (false, null, 0, empty sequences)" |
|
|
Garth Goldwater
2019-08-01 08:00 #
the UI follow up has a lot of cool ideas: https://youtu.be/d3jGof4GSCc @Ivan Reese i assume you’ve seen this but just in case |
|
|
Mariano Guerra
2019-08-01 07:06 #
https://www.youtube.com/watch?v=EPFNHYah9F4&feature=youtu.be |
|
|
Dan Cook
2019-07-31 17:49 #
... except maybe with a "persistent data structure" model, where doing again just creates something new rather than changing what was there before |
|
|
Dan Cook
2019-07-31 17:48 #
Of course, it would be a mess if everything just populated into the same user-side space, so perhaps a script would get it's own bounded view and execution sandbox, and could be allowed to load other scripts into it. And then you could wipe out a whole context if you wanted ... Aaaand I think I just described actual webpages again :/ |
|
|
Dan Cook
2019-07-31 17:45 #
The page-centric concept of the web (from a browser standpoint) is a bit strange to begin with, if you think about it. I think it would make sense if instead of "loading a page", you loaded a script, which then programmatically creates content. And then, why should loading something else have to make that go away? Perhaps loading the same thing twice would just give you two copies of it, just like if you run the same program twice or open the same file twice. That would also give "history" a different connotation |
| 3 comments | |
|
|
Garth Goldwater
2019-07-31 17:37 #
does anyone know of any radical paradigms for navigating the web? eg: not treating web pages like documents, not treating history as mostly ephemeral, facilitating collection or breadth-first search, weird zooming user interfaces, etc? |
| 18 comments | |
| # |
Tom Lieber
2019-07-30 22:09 #
@Steve Krouse (or anyone more well read on this than me), I enjoyed https://futureofcoding.org/essays/dctp.html but I got tripped up on the part I snipped below. Is there any reason why you chose to sequence the buttons instead of expanding the domain of button? |
| 4 comments | |
|
|
Pezo - Zoltan Peto
2019-07-30 16:05 #
Are you aware of a tool (I imagine something like a jest plugin) where you can specify a unit test with all the inputs and their possible values and add logical rules to be able to omit some of the input permutations based on the given logical rule. The remaining set of permutations to test might be represented in a table (and I'd be prompted to fill in all these tests.) That does not seem hard to do at all, but maybe there is something out there. + is there any tool which does something similar under the hold? Maybe a proof assistant when we are specifying our types? Dunno it just seems there must be something and I can't join the dots. |
| 6 comments | |
|
|
Sébastien
2019-07-30 13:42 #
There's a lot to learn from audio applications in terms of interactive editing https://www.youtube.com/watch?time_continue=185&v=mfwB3_oCumM |
| 2 comments | |
|
|
Yves Jean
2019-07-30 06:39 #
I was planning on posting this but @Kartik Agaram query for "sourceless programming" is a good reason. Please check out (still in Beta) www.kodou.io for an example of an API-first programming model with no downloaded source or dependencies. The Documentation page describes it. We are looking for feedback. Accounts only by request at this time. |
| 2 comments | |
|
|
Felix Kohlgrüber
2019-07-30 03:57 #
How would you render source code if you weren't tied to a 2D grid of monospace characters? I'd probably start by using a proportional font for all words in the code. I posted an example of this here: https://mobile.twitter.com/FKohlgrueber/status/1156152950093426688 After getting used to it, I feel like it's easier to scan the code in that representation. What do you think? |
| 34 comments | |
|
|
Kartik Agaram
2019-07-29 17:20 #
Has anyone here (particularly Forth folks like @Jeremy Penner) heard of sourceless programming? I came across the term in https://news.ycombinator.com/item?id=20550656, and the best description I can find for it is in some of the slides of https://docs.google.com/presentation/d/1wL2eqf7eHGEybsK0C4MU… |
| 25 comments | |
|
|
Pezo - Zoltan Peto
2019-07-29 15:39 #
I'm often wondering about Uncle Bob's Transformation Priority Premise (extract here: https://medium.com/@zolipeto/extract-of-uncle-bobs-transform… ) Now I am wondering if it is approachable from another angle: using structured programmings 'Sequence, Selection, Iteration' as building blocks (maybe with some extansion eg. State). WDYT? Is there any research on that? @prax08 For example I'd say these transformations would make sense: nil -> Sequence Sequence -> Selection (+State to branch on & StateSetter before Selection happens) Selection -> Iteration So I'd be interesred how structured programmings building blocks behave and relate when we use TDD or when we just refactor a piece of code. |
| 3 comments | |
|
|
Will Crichton
2019-07-29 09:41 #
If you wanted to justify the claim “functional programming and PL theory are useful tools to learn”, how would you do it? What concepts and skills would you point to, and what real-world examples/applications would you use to demonstrate the usefulness of FP? For example, “Can Programming Be Liberated from the von Neumann Style” and “Why Functional Programming Matters” both use higher-order functions/composition on lists/trees to prove the point. |
| 14 comments | |
|
|
Shalabh
2019-07-29 09:18 #
https://www.forbes.com/sites/cognitiveworld/2019/07/29/the-f… |
| 8 comments | |
|
|
Jonathan Schuster
2019-07-29 07:47 #
For those interested, I wrote about my highlights from Curry On: http://jschuster.org/blog/2019/07/29/highlights-from-curry-on-2019/ |
| 4 comments | |
|
|
Mariano Guerra
2019-07-29 01:32 #
"All of the extra features in a more feature-rich system like SuperCard (or even VB) are not harmless. There is a fundamental difference, especially for a child, between a system which you can fully wrap your mind around and one with countless mystery knobs." |
|
|
Mariano Guerra
2019-07-29 01:30 #
"Jobs supposedly claimed that he intended his personal computer to be a “bicycle for the mind.” But what he really sold us was a (fairly comfortable) train for the mind. A train which goes only where rails have been laid down" |
|
|
Mariano Guerra
2019-07-29 01:26 #
http://www.loper-os.org/?p=568 |
|
|
Kartik Agaram
2019-07-28 21:35 #
"I’ve noticed when I think about performance nowadays that I think in terms of two different aesthetics. One aesthetic, which I’ll call Never Miss a Frame, comes from the world of game development and is focused on writing code that has good worst case performance by making good use of the hardware. The other aesthetic, which I’ll call Do Almost Nothing comes from a more academic world and is focused on algorithmically minimizing the work that needs to be done to the extent that there’s barely any work left, paying attention to the performance at all scales." http://thume.ca/2019/07/27/two-performance-aesthetics |
| 4 comments | |
|
|
Justin Blank
2019-07-28 09:06 #
Reading about program synthesis, I noticed a major implicit assumption in most programming tools. The assumption is that the format that’s best for reading code is also the format that’s best for manipulating it. I’m sure that’s often, probably mostly true. Really terse DSLs (regex, date formats, sprintf) seem like a good candidate where they might come apart. This is probably old news, but I hadn’t thought about it that way. |
| 5 comments | |
|
|
William Taysom
2019-07-27 19:50 #
With the Slack as sort of a stream of collective consciousness and the podcast as one-on-one deep dive, I wonder if there's any will to distill it all. What do all these ideas bumping around amount to? |
|
|
Will Crichton
2019-07-27 15:55 #
(@Steve Krouse curious to hear your thoughts on all this since you’re running the show!) |
| 6 comments | |
|
|
Dan Cook
2019-07-27 15:54 #
Makes sense |
|
|
Will Crichton
2019-07-27 15:53 #
I think the step to take is transitioning from “common location for discussion” to “organized community”, e.g. having an individual or (preferably) group/committee that meets regularly and tried to make decisions that benefit the community |
| 3 comments | |
|
|
Dan Cook
2019-07-27 15:52 #
I won't disagree there. And maybe that's a good example: most of us as individuals can't make that all happen ourselves. But if we can enable someone(s) to sort that out, we could have an amazing community / collaboration across individual ideas & efforts. O guess we're all trying to decide what that looks like :) |
|
|
Will Crichton
2019-07-27 15:49 #
Agreed! I think there’s a lot of good ideas swirling around here. From that perspective, I think my only take would be: rather than focus on bringing in more community members, we need to first figure out how to structure the community. As several have echoed in #administrivia, Slack is just absolutely not the medium. For example, I would love to be involved in this community as it intersects with many of my interests, but I find it hard to keep up with the chat and all of the channels. Ramping up the number of participants would only worsen the problem and I think long-term deter creativity if everyone gets drowned in the noise. |
|
|
Dan Cook
2019-07-27 15:45 #
And maybe Steve's lucky to get to be in the middle of not just finding these other perspectives and projects, but getting to personally interview so many of them and then share that with everyone else not in a position to do so. |
|
|
Dan Cook
2019-07-27 15:43 #
I'm not sure I have a direct example, other than the gold mine it's been for me personally, and other attention that's been drawn here. For example, there are lots of key people & projects that have all seemed to find their way here, that otherwise I've had to search long and hard to become aware of. And Steve's podcasts have been excellent at hitting a broad spectrum of influence and providing a public deep dive into a lot of it |
|
|
Dan Cook
2019-07-27 15:38 #
Essentially I'm saying it's a golden opportunity to draw lots of people in and expensive this effort and foster connections among it all. So investing in that success is golden, not because of one thing or one effort, but because of the unique position to catalyze and connect |
|
|
Will Crichton
2019-07-27 15:36 #
Yeah, maybe I’m just misunderstanding. Could you provide a few examples of the kind of support you’re imagining that’s distinct from how FOC operates today? |
|
|
Dan Cook
2019-07-27 15:36 #
Granted, Bret Victor and Alan Kay (and the like) have done more to inspire individuals than anybody, and they're actively doing all they can. But what we have here is a lot of inspired people coming together in a grass-roots effort (or rather, a community of many such) in a way / on a direct level that I don't know exists anywhere else. |
|
|
Dan Cook
2019-07-27 15:33 #
As I said, I'm not suggesting betting on any one person to lead TheSolution(tm). I agree (and it's also Steve's position) that the future is in many people collaborating and sharing together, and or would be a message to all come together and try to decide on the one "best" way; because who really knows? And that limits perspective and potential. BUT, the position Steve is in for bringing many different efforts together, and basically being responsible for starting the most successful community I've come across (and I guess even the big guys are giving some level of acknowledgement there) ... We make that succeed, we help Steve be in the best position to help foster that as best he can ... maybe you see what I'm saying? It's about the many people many efforts many perspectives, but this place (and Steve's pain to spread awareness and explore and share the connections between a lot of it) has probably done the best good in terms of that effort, for what it is. |
|
|
Will Crichton
2019-07-27 15:10 #
I think there’s two important claims in what you’ve said: 1) the “future of coding” (FOC) community needs a single leader to be more effective in seeing change in the world, and 2) Steve is the best person today to satisfy that role. As a PhD student working in between PL/systems/HCI, I think point #1 is a critical discussion to have, since, the academic side of FOC is relatively nascent and open to change, e.g. the PLATEAU workshop (http://plateau-workshop.org/) is hosting a special section on articulating standards of research/discourse for academic research in this area. So, I appreciate that you’re making a stand and opening the discussion, Dan. That said, I pretty strongly disagree with you on both counts. Historically, I think most cutting-edge progress in computer science has been made in decentralized academic communities, not in projects driven by a single leader with a vision. This is true both of industry research labs (Bell Labs and Xerox PARC before, FB/Google/MSR today) and particularly true of academic subfields. Of course, within these subfields, prominent individuals drive progress and set the tone of the discourse, but they do not command any intrinsic influence over other researchers. All ideas are subject to peer review. What’s made these communities work is having space, time, and money to allow a group of smart people to freely collaborate on forward-looking projects, not a central direction or leader. To mention point #2, the argument above also highlights the really awesome work Steve has done: such a space/time/community does not exist for FOC yet, and so Steve has done the hard work of building the infrastructure (Slack/podcast/etc.) for relevant folks to disseminate their ideas and talk with others. However, I don’t think Steve, or really anyone in the broader FOC community (myself included), has a strong vision that I would agree with. (I want to avoid this discussion being too much a referendum on Steve’s character, since that would almost certainly not be productive, but I’m mostly going to refer to the ideas outlined in https://futureofcoding.org/about). For example, I think a lot of discourse in the community tends to follow in the mold of “Out of the Tarpit”, which is extremely general in discussing ideas like “complexity” or “abstraction” or even “state” really. I’m extremely skeptical of visions for the future that are founded in mechanisms (e.g. a language with or without XYZ features), as opposed to applications (e.g. we want to make a new kind of interaction/way of thought possible, or we want to specifically eliminate a class of bugs in this application space,). Again speaking historically, I would say the vast majority of good ideas started from concrete systems and applications, not broad theorizing. Bret Victor is an easy one to praise in this community, but I do think he does a better job than most researchers at articulating a believable vision for the future. His poster (http://worrydream.com/cdg/ResearchAgenda-v0.19-poster.pdf) is a fabulous example. But I have yet to see its equivalent for programming languages / large-scale systems. |
|
|
Dan Cook
2019-07-27 14:48 #
(Disclaimer: this is coming purely from my own perspective and passion to push software to it's full potential. The world needs this to happen, and Steve is in a very unique position to help/influence it. Nobody has suggested or asked that I promote anything as I have done) |
|
|
Dan Cook
2019-07-27 14:44 #
Personally, there's so much I'd like to do but can't, being tied to a full time job and a family of my own (wouldn't trade them for anything, but my point is I just don't have the time and resources). But even among all other PhD students who are essentially focusing all their time in similar work (and lucky enough to stumble upon realizing the potential future that software has yet to live up to) ... even among others in similar pursuit and the time and resources to do it, it seems that Steve has found himself in a very unique & privileged position. Now I'm not suggesting betting on any one person on being the one guy to invent TheSolution(tm), but if we were to select one person to invest in who is at a unique position to influence and to be taking in (and hopefully incorporating) more influence and connections than most in his efforts and the also in his influence to others ... I'd say Steve is the guy. |
|
|
Dan Cook
2019-07-27 14:30 #
So I've been going through the "recap" podcasts and getting a good picture of where @Steve Krouse has been and where he's going, and this community along with it; and I'm coming from a smaller community that formed in response to a discontinued VPRI mailing list, and attempts to collaborate, and finding other similar communities along the way, until ultimately winding up here. From all I've seen, it seems that this community is the biggest most functional group of such people out there, in the realm of collaboration toward the future of coding or Kay's "computer revolution that hasn't happened yet". And in particular, where Steve has been, the connections he has / has had, the following here, his involvement with education, etc. ... It seems that Steve is very much at a center-point of all this (at least from a community/influence standpoint), and in the very fortunate position to have been where he's been and connect and that he's able to be formally researching and developing this stuff as the main focus of his time ... I don't know that there's anyone else on the planet quite in that position of ability and center of influence. What I'm getting at is that it's my opinion that the best thing anyone can do for this collaborative effort / future of coding, is to enhance Steve's work & influence as much as possible, and also of this community. That's not to say don't work on your own stuff -- we need as many people doing that as possible! But as far as growing and empowering a community and an individual in a unique position to drive it forward -- whether personally or though his connections and influence -- I think there's enormous potential to focus/draw as much as possible to him & this community. If we help Steve succeed, we help this community & effort succeed. It seems that perhaps Alan Kay felt the same way, yes? So for example, rather than doing any further work to build up my own community from nothing, I would just direct people here. And anything we as a community can do to get Steve as much funding and sources and contacts/followers as possible, could have tremendous potential / payoff for the future of software. Seriously, he's in a very privileged position (and lucky to have some key influences & friends that helped him get there). Just saying, think about it |
| 2 comments | |
|
|
Duncan Cragg
2019-07-27 13:32 #
:sweat_smile: |
|
|
Wouter van Oortmerssen
2019-07-27 12:34 #
I've done a lot of attempted language design. |
|
|
Dan Cook
2019-07-27 12:08 #
https://youtu.be/AQQPNQ0PFSc |
|
|
Duncan Cragg
2019-07-27 05:45 #
Ah OK |
|
|
Nick Smith
2019-07-27 05:45 #
Only once you've changed the world :stuck_out_tongue: |
|
|
Duncan Cragg
2019-07-27 05:45 #
Do I get the prize for inventing the future of programming? |
|
|
Duncan Cragg
2019-07-27 05:44 #
Sounds like how my Onex works! |
| 4 comments | |
|
|
Nick Smith
2019-07-27 05:42 #
Maybe the reason why nobody's invented the future of programming is that they always settle for only one of these paradigms :joy: |
| 1 comments | |
|
|
Nick Smith
2019-07-27 05:41 #
Basically you end up with a functional language inside a query language inside the actor model |
|
|
Nick Smith
2019-07-27 05:40 #
I have a new random question: Has anyone seen attempts to take a functional language and mix it with a graph database / query language? Today I've been wondering if you can have a standard "select" query from a graph DB spit out the resultant subtree(s) as an ADT (record) that a functional language can traverse/manipulate as normal in order to make an update. You could take the Elm Architecture and just swap out the Model for a graph DB, and have the update function trigger a query upon it that feeds data into the functional language. |
| 4 comments | |
|
|
Stathis Sideris
2019-07-27 03:39 #
Some interesting ideas here on the interaction of text+mouse: https://www.youtube.com/watch?v=SgAWGh1s9zg |
| 3 comments | |
|
|
Roben Kleene
2019-07-25 17:01 #
What to people think of tools that try to solve "the designer to developer handoff problem"? I.e., today usually designers create a static mock-up and hand it off to a developer to implement, but why can't the designer's design tool just output something usable that doesn't need a developer to "translate" it? Here are some recent tools that try to solve this problem: - Webflow https://webflow.com - Framer X https://www.framer.com/ Here are some older tools that try to solve this problem: - Interface Builder https://en.wikipedia.org/wiki/Interface_Builder - DreamWeaver https://adobe.com/products/dreamweaver - Quartz Composer https://en.wikipedia.org/wiki/Quartz_Composer - Origami Studio https://origami.design/ Are there other important ones I'm missing? Interface Builder dates from 1988, the same year as Adobe Photoshop, so we've had a long time to work on this problem, but I wouldn't say any of these tools have been very successful. What makes this problem so difficult? Are there tools that tried to do this before Interface Builder and DreamWeaver? How did they fare? What's the most successful piece of software to ever try to do this? I'd say it's a toss-up between DreamWeaver and Interface Builder, is there anything more successful I'm missing? |
| 23 comments | |
|
|
Robert Hall
2019-07-25 12:49 #
Hi all, thanks for the invite @Steve Krouse! |
| 2 comments | |
|
|
Ivan Reese
2019-07-25 11:01 #
|
| 21 comments | |
|
|
Steve Krouse
2019-07-25 02:04 #
Speaking of node-and-wire tools, this one reminds me a lot of Luna lang. One original feature I liked was the ability to collapse a number literal into a function that inputs numbers to save space https://lynxtool.com/doc/What.html |
| 3 comments | |
|
|
Stathis Sideris
2019-07-24 15:37 #
I’m confused, is this nodes.io with a new name or a very similar separate project? https://cables.gl/ |
| 4 comments | |
| # |
Deklan Webster
2019-07-24 15:10 #
Thought you all might appreciate this. From Programming Paradigms for Dummies: What Every Programmer Should Know by Peter Van Roy |
| 20 comments | |
|
|
Steve Krouse
2019-07-24 09:33 #
The new stdlib build tool looks like something I've been wanting for a while now: Zapier recapitulated as a thin-layer of abstraction over code that basically just handles API authentication for me. https://www.youtube.com/watch?v=EXDTrObkZFQ&feature=youtu.be |
|
|
Benjamin Gudehus
2019-07-23 10:19 #
Ahh, and the idea is to blog and open-source code while learning and building prototypes. Starting with an analysis of the vega dataflow paper (Reactive Vega: A Streaming Dataflow Architecture for Declarative Interactive Visualization) and code examples. |
| 2 comments | |
|
|
Benjamin Gudehus
2019-07-23 10:11 #
So, I’ve been working on expert systems for two years. The central pitch (of a rules engine) is that it will allow business people to build their rules without programmer involvement. sounds nice, but is not often nice in practice. rule systems can grow very hard to maintain over time. and you maybe need tooling so you can cope with it by detecting overlapping rules or visualize the program flow. There is also the question, what skills you need to author and maintain rules. Do people who author rules automatically learn quasi programming skills? Is it maybe better to let (carreer) programmers author the rules, and have business-readable notation instead, to still allow to build a rich and deep communication channel between programmers and business/underlying domain? I’ve been reading halfway through “out of the tar pit”, watched half a dozen of lighttable/eve talks with all the eve experiments, and look into vega dataflow code. I think I’ll work in this area more in the upcoming months. |
| 3 comments | |
|
|
John Austin
2019-07-23 09:39 #
Not sure if this has been posted before, but this is quite close to the sort of thing I've been working on: http://nodes.io/ |
| 10 comments | |
|
|
Wouter van Oortmerssen
2019-07-23 09:12 #
@Dan Cook I think you are over estimating the amount with which new representations can make code clearer, or at least, we haven't found such representations yet. There is plenty of super complex code out there that even a well meaning, talented programmer couldn't make simple, be it by "decomposition and abstraction" as you say (which are very limited in their power), or by using better representations of the code. The real complexity is in the "logic" (for want of a better word) of the code, and we have no silver bullet to simplify it. |
| 29 comments | |
|
|
Dan Cook
2019-07-23 08:36 #
And the other question is, how do you distill the principles of designing coherent software into something that can easily be explained and taught? I think this is a vital component missing in almost all software education. I already have some of these figured out, or at least I've been thinking about it and observing it in practice for years. It's somewhat hard to explain without visuals, but essentially it's about making your code match closely with the user mental model, and reducing the gap between code and running program. Some of it is related to Bret Victor's "Learnable Programming" and "Magic Ink", but Jim Coplien's work is actually what got me thinking about this stuff to begin with. I recommend watching his "Reflections on reflection", as it ties a lot of this together (and draws parallels between Alan Kay, Christopher Alexander, Piaget, etc.): https://www.infoq.com/presentations/Reflection-OOP-Social/ |
|
|
Dan Cook
2019-07-23 08:23 #
There are plenty of instances of badly written software putting lives in danger. And true, it was a new field at some point, but what still is allowed to pass as "professional" software is alarming and embarrassing. So that's one of my main points: on the whole, it's like even basic fundamentals of designing coherent software are by and large missing, ignored, or not even grasped. Things like proper decomposition and abstraction, etc. My guess is that this is largely due to that fact that you cannot "see" what's in a program: the data flows and execution flows, etc. Like many programmers are so used to having to decipher code anyway, that they either don't realize that it doesn't make sense, or that it can make straightforward sense. There are multiple times in my career where I've thought to myself: if the components and flows and organization in our code was something physical that any non-programmer could walk by and see -- if it was at least vaguely visible what their software "engineers" were doing with/in their software -- the business would be appalled. Hey, that's our name on that! We don't have time and money to waste this convoluted nonsense! We expect or customers to rely on this stuff! I know many consider this to be a subjective matter, but I'm not taking about I prefer Jim's style of writing versus Joe's, I'm taking about Sarah laid out the business requirements in two clear paragraphs and a few bullet points, and Sue wrote 5 pages about the same thing with no coherent train of thought. (names and examples are made up). My point is that language and tools will not fill this gap, but is something that needs to be understood and fixed in it's own rite. HOWEVER, I do think it can help tremendously if it's obvious at a glance whether a program (or software component) is straightforward, or horribly convoluted. If we can see what we're doing, maybe we can begin to understand what we're doing, see what we're doing, and talk about it and take ownership of it. (This is mostly coming from a context of what happens in professional software development, based on my experience and observations) |
| 1 comments | |
|
|
Stefan Lesser
2019-07-23 07:25 #
As a lot of people here develop their own languages, this seems useful: http://thume.ca/2019/07/14/a-tour-of-metaprogramming-models-for-generics/ |
|
|
Stefan Lesser
2019-07-23 06:48 #
A Guardian interview with some valuable thoughts from the programmer/engineer who lead the software teams for NASA’s Apollo missions, Margaret Hamilton: https://www.theguardian.com/technology/2019/jul/13/margaret-… >At the beginning, nobody thought software was that big a deal. But then they began to realise how much they were relying on it. The group grew so there were approximately 100 software engineers on my team. Astronauts’ lives were at stake. Our software needed to be ultra-reliable and it needed to be able to detect an error and recover from it at any time during the mission. And it all had to fit on the hardware. >I thought: my God – this could inadvertently happen in a real mission. I suggested a program change to prevent a prelaunch program being selected during flight. But the higher-ups at MIT and Nasa said the astronauts were too well trained to make such a mistake. Midcourse on the very next mission – Apollo 8 – one of the astronauts on board accidentally did exactly what Lauren had done. The Lauren bug! It created much havoc and required the mission to be reconfigured. After that, they let me put the program change in, all right. >During the early days of Apollo, software was not taken as seriously as other engineering disciplines. Though in fact we had a complex system of systems, we weren’t getting credit for what was a legitimate field. It was out of desperation I came up with the term, to say: “Hey, we’re engineering too.” It was an ongoing joke for a long time. Then one day in a meeting, one of the most respected hardware gurus explained to everyone that he agreed with me. The process of building software should also be considered an engineering discipline, just like with hardware. It was a memorable moment. >Also, what became apparent with Apollo – though it is not how it worked – is that it is better to define your system up front to minimise errors, rather than producing a bunch of code that then has to be corrected with patches on patches. It’s a message that seems to have gone unheeded – in this respect, software today is still built the way it was 50 years ago. |
|
|
Michael Arntzenius
2019-07-23 03:34 #
@Daniel Hines what kinds of problems do you see answer set programming as being particularly well-suited for? I've heard of it and know vaguely what it does (finds all minimal models, like Datalog but without the stratification condition), but don't know what I'd use it for. |
| 3 comments | |
|
|
Dan Cook
2019-07-23 00:03 #
I'm just going to spill some thoughts here: There are multiple aspects to making programming more comprehensible, or perhaps even properly doable in the first place. The first obvious one is language. But even if you could have the perfect language, textual code is not the best for comprehending and manipulating complex models. So then there's presentation & modeling: perhaps some things are much better represented in a visually, or much easier to edit or build if working with a direct structure (rather than a typed out one). But if your program-flow is a mess or the abstractions are bad, then it's going to be hard to follow regardless. So then there's the actual form of the program itself: does it lay out what it is and what it does in a fairly straightforward and obvious way? How big of a gap is there between a human understanding of the software, and how it reads? Do you have to reverse engineer the code to make sense of it? All these things are essential: the presence of one cannot compensate for the absence of the other. For example, you can have a horrible mess of code, but that horrible mess can be diagrammed in a way that makes the exact nature / layout of that horrible mess immediately obvious. And having the flow and components of a program be obvious at a glance, does not mean that that flow itself is not convoluted and hard to follow in it's own rite. And likewise, a mass of textual code may do a horrible job of making a program easy to understand by looking at it, but the components and flow of the program may be laid out well and very easy to follow. I have a couple points about this, but I'll have to save it for a follow-up post |
| 2 comments | |
|
|
Scott Anderson
2019-07-22 13:47 #
http://regent-lang.org/ |
| 1 comments | |
|
|
Dan Swirsky
2019-07-22 10:35 #
I'm designing a language that takes both roads. Objects are defined declaratively (and in any order), but object property values may be "defined" imperatively or declaratively. If the value of an object property depends on the value of another object property, its value is (by default) reevaluated (i.e., reactively) whenever the depended-on value changes. Like in a spreadsheet, but without the spreadsheet. |
| 4 comments | |
|
|
Josh Marinacci
2019-07-22 09:59 #
i get the feeling there aren’t strict separation between declarative and imperative. it’s a spectrum and real world languages fall somewhere on the spectrum |
| 27 comments | |
|
|
Will Crichton
2019-07-22 08:43 #
(Maybe, I don’t know TF 2+ specifically.) |
|
|
Will Crichton
2019-07-22 08:41 #
I feel like it’s wrong to call the problem declarative vs imperative. It’s just about staged metaprogramming, and the eager API removes the staging. |
| # |
Mariano Guerra
2019-07-22 02:35 #
I don't see how this is not declarative |
| 1 comments | |
|
|
Duncan Cragg
2019-07-22 02:34 #
citation needed :smile: |
| 1 comments | |
|
|
Mariano Guerra
2019-07-22 02:33 #
that feels backwards :stuck_out_tongue: |
|
|
Mariano Guerra
2019-07-22 02:33 #
"Wrangling graphs in TensorFlow 1.x (declarative programming) was disorienting for many, but it’s all just a bad dream now with eager execution (imperative programming)." |
|
|
Shalabh
2019-07-21 15:46 #
https://blog.ploeh.dk/2019/07/01/yes-silver-bullet/ |
| 3 comments | |
|
|
Shalabh
2019-07-21 15:17 #
Great demo by @Tudor Girba: https://www.youtube.com/watch?v=Pot9GnHFOVU |
|
|
Edward de Jong
2019-07-21 13:32 #
In Modula2 and Beads, the dependency graph is trivial to construct because imports are required to be at the start of the program, so a typical program doesn't need a makefile. In Red they use the clever trick of allowing compilation in the language itself, and since there is compile time execution in Red, a makefile is just a Red program. A very elegant solution. I personally despise all the horrible make systems like Gradle, Ant, Leiningen, etc. which are very complex and a horrible additional burden to a learning programmer. |
| 6 comments | |
|
|
Josh Marinacci
2019-07-21 13:25 #
I wrote up my thoughts on build systems here: https://joshondesign.com/2019/07/21/thoughts_build_systems |
|
|
Josh Marinacci
2019-07-20 19:12 #
What do you consider to be the definition of a “declarative” language? I ask because I keep running across build tools which claim to be easier/superior because they are declarative, yet without fail they run up against a wall where they keep trying to shoehorn in more features while remaining declarative, and instead should have just gone to a full Turing complete language. |
| 19 comments | |
|
|
Pezo - Zoltan Peto
2019-07-20 16:01 #
[Dependent Types][Temporal Logic][Model Checkers] The complexity of Asynchronicity & Concurrency lead me to the formal expression of time related logic: Temporal Logic (https://en.wikipedia.org/wiki/Temporal_logic) There are multiple temporal logics with different level of usefulness. (Check Temporal logics section.) I really want to solve harder problems and express deeper relations, so it seems to me what I’d need is CTL at least (https://en.wikipedia.org/wiki/Computation_tree_logic). I thought I might want to model my software (any kind of app!) and prove it is working as intended using CTL (or other more expressive TL) in Agda/Idris (Coq/TLA+) and then make a similar implementation in another language. Eg. there is an LTL implementation in Agda, but I did not find similar things for CTL.(https://github.com/xekoukou/LTL) What do you think, is it a good idea to express my model using (C)TL in Agda/Idris, or I should use a more dedicated piece of technology for that problem? Is there a limit in case of Agda/Idris for that in theory? Any resource is appreciated! @Sankha Narayan Guria @Kartik Agaram |
| 1 comments | |
|
|
Deklan Webster
2019-07-20 11:20 #
How much do you all value conciseness, generally? There's that observation that bugs/SLOC seems to be constant across languages. I know it's possible to go crazy with the conciseness: code golfing, point-free style insanity, etc, etc. But, putting that aside, idiomatic code does seem to vary a lot in verbosity. I've noticed that FRP seems to be verbose. So, just now I wanted to test out my impression for frontend. I looked at TodoMVC examples for CycleJS, Reflex, Turbine, among others. I know it's not an elaborate example but generally these are coded to show idiomatic usage so it's decent. I removed comments and measured lines and characters without whitespace. Of all the ones I looked at, these 3 FRP ones are the most verbose by characters. All three are at least 3 times longer than the Svelte example. (Svelte and Cycle aren't typed. Turbine and Reflex are.) (The Svelte example isn't codegolfing or doing anything funky). Anyone have thoughts on this? How much should we value types or purity/referential transparency over verbosity? |
| 59 comments | |
|
|
Scott Anderson
2019-07-19 14:53 #
https://news.ycombinator.com/item?id=20476919 |
| 9 comments | |
|
|
Mariano Guerra
2019-07-19 06:43 #
https://twitter.com/gdm3000/status/1151469462614368256 |
| 1 comments | |
|
|
Szymon Kaliski
2019-07-19 03:33 #
I also gave a talk: https://www.youtube.com/watch?v=055M-I8DlRs :slightly_smiling_face: |
| 2 comments | |
|
|
Mariano Guerra
2019-07-19 02:56 #
https://www.youtube.com/watch?v=Pot9GnHFOVU&t=1954s |
|
|
Mariano Guerra
2019-07-19 02:55 #
Curry On! videos are available: https://www.youtube.com/channel/UC-WICcSW1k3HsScuXxDrp0w/videos |
|
|
Nick Smith
2019-07-19 01:49 #
Not sure if blurring the distinction between regular functional data structures & relational algebra is a good thing or a hot mess but I've ended up here accidentally and want to understand it more. |
|
|
Nick Smith
2019-07-19 01:48 #
I'm asking this because I'm trying to figure out the "essential" building blocks of a declarative language by stripping out and unifying features (not the mathematical blocks but the user-facing blocks) and I've wandered into territory where I've stripped away the value/type distinction and am considering what you can do with sets of labels and of discrete maps, which seem to overlap with relations. For example, the set {(father -> "bob"), (child -> "jim")} can be interpreted as an ordinary record/struct, but could also be interpreted as a labelled tuple belonging to a relation, and a set of such sets becomes the relation. Relational operators could then act on it. |
| 6 comments | |
|
|
Nick Smith
2019-07-19 01:35 #
What's the status of functional relational programming languages? The term could (according to me) be defined as languages which represent their data primarily as relations, acting on them with associated relational operators, but with the additional ability to express pure functional transformations (like Haskell). The term first appeared (I believe) in the well-known paper "Out of the Tar Pit" (the authors never chased it further). I think Datafun by @Michael Arntzenius hopes to be something like this, and there's also http://cell-lang.net/ . |
| 2 comments | |
|
|
Andrew Reece
2019-07-16 06:48 #
There are some efforts in the physical world to de-siloize products/artefacts that might be worthwhile as an analogue https://solar.lowtechmagazine.com/2012/12/how-to-make-everyt…. The progressive levels of user involvement is probably relevant to many UXs. (take out "solar" from the URL if you want to go to the conventional, non-solar-powered version of the website) |
| 2 comments | |
|
|
Pezo - Zoltan Peto
2019-07-16 05:23 #
Hi everyone! I posted this question few days ago to hackernews and got to the frontpage. Maybe you are interested and/or might add comments to it. https://news.ycombinator.com/item?id=20431879 |
| 11 comments | |
|
|
Scott Anderson
2019-07-15 12:13 #
Related to the above thread (https://tabnine.com/blog/deep) |
|
|
Gregg Tavares
2019-07-15 00:51 #
Autocompletion in editors and IDEs. Where does it work and where does it fail? |
| 2 comments | |
|
|
Justin Blank
2019-07-14 09:22 #
Something that happens to me when I’m working with an api is that I’ll need to construct a Foo. To do that, I need a Bar, a Baz and a Frob, so then I have to figure out how to construct each of those. Maybe Bar is available from a local variable, I have a getter for a Baz, but I have to build the Frob out of some other bits I have. I had the idea of a tool that constructs various recipes for getting to your target type based on the local variables and functions you have in scope. Sort of a multi-stage autocomplete. Do any of you know if this is an idea that’s been explored? |
| 21 comments | |
| # |
Yair Chuchem
2019-07-14 05:23 #
@Nick Smith To demonstrate the concept of “projectional syntax sugar” a bit more - here’s a simple example: The record below is equivalent to {prev: num, next} in JavaScript or {prev = num, next} in Haskell with NamedFieldPuns - the “next” field is set to the value of the variable with the same name - |
| 12 comments | |
| # |
Yair Chuchem
2019-07-14 05:03 #
@Nick Smith See this example - In the implementation of sum, fold wants a “binary operator” function that takes two parameters - an “accumulator” and an “item”. In Haskell, which is based on positional arguments, I’d simply pass the operator “+”. But in Lamdu I can’t because the parameters of “+” are not called “accumulator” and “item”. So instead I use a lambda which uses “+”. However it gets sugared as a “lightweight lambda”, with underlines under the lambda symbol and under its parameters where used. This isn’t too heavyweight and it also gives us helpful places to display the intermediate values of everything (when display of evaluation results is enabled) |
| 13 comments | |
|
|
Nick Smith
2019-07-14 00:20 #
I'm starting to doubt that named/non-positional params + first-class functions would even be a real problem, since in many cases where you're passing functions as arguments they need to be bespoke anyway and so the "wiring" of names comes for free as you're defining them. Agree or disagree? How often does one pass a premade library function as an argument? It's hard for me to predict how often this would come up without writing real code under this constraint. I wonder if there's some way to measure this in real code bases. |
|
|
William Taysom
2019-07-13 11:19 #
As extra credit, I'd love to see an interactive editor which remembers how you went about disambiguating calls so as to warn you when the assumptions that lead to a choice change. For example, if you chose to use X and Y together in some way and the list of things you can do with an X and Y changes, then you might want to select a different choice. |
| 1 comments | |
|
|
William Taysom
2019-07-13 11:15 #
You can't escape wiring as a thing that needs doing. After trying a bunch of approaches here and there, the ultimate best I can imagine is something in the spirit of type-directed explicit disambiguation. So when you first write code, you tell the system, "here's an X, here's a Y, let's combine them." It shows the ways to do so. Then you pick a specific one. (See also inheritance.) Dynamic lookup rules will at times be right and at times be wrong and usually be confusing. Consider the following. This was Java (don't know if they've changed it since), which dispatches based on the type of the variables used, not on their values:
Of course if overloaded is a method in two classes, the dispatch would be based on the value. So, as a rule, x.m(y) may work differently than a superficially equivalent m_(x, y) or y.m__(x). |
|
|
Nick Smith
2019-07-13 03:39 #
I can imagine with editor support the wiring can be type-directed (in a statically typed language), but that doesn't seem like a complete solution |
| 1 comments | |
|
|
Nick Smith
2019-07-13 03:34 #
Seems like an interesting problem |
|
|
Nick Smith
2019-07-13 03:32 #
I'm basically wondering if there's a clean approach to "wiring" arguments to parameters when everything is named but the names may not always be the same |
|
|
Nick Smith
2019-07-13 03:31 #
Has anyone seen examples of languages that only use named parameters (a.k.a. keyword args, as opposed to positional parameters) and also support first-class functions? Looks like these features become messy when combined since now your type signatures ask for e.g. "a function named f with parameters x and y", whereas the function named g that you intend to pass as an argument has parameters a and b, so then you have to make a wrapper function around it. |
| 26 comments | |
|
|
Deklan Webster
2019-07-12 20:59 #
@Steve Krouse in that FRP paper you talk about FRP preserving our ability to reason locally. But, I think you also admit that Reflex and Turbine code can get pretty gnarly and confusing. I agree with both of these more or less. I'm ambivalent. What conclusions can be drawn here? I see some possibilities. Is our current conception of FRP just too complex (and it would be possible to simplify)? or are the benefits of FRP just only appropriate in really complex and/or large systems? Something else? Anyone, thoughts? |
| 4 comments | |
|
|
Shalabh
2019-07-12 11:02 #
https://medium.com/@andyjko/dagstuhl-trip-report-learning-an… |
| 2 comments | |
|
|
Daniel Hines
2019-07-11 18:41 #
I feel like concurrency introduces vast complexity and thus results in more errors, but I have no empirical data to support this. Does anyone have any go-to papers/data on such a thing? |
| 23 comments | |
|
|
Andrew Reece
2019-07-11 02:49 #
Anyone spent any time looking at TempleOS? There's a decent overview here: http://www.codersnotes.com/notes/a-constructive-look-at-templeos/ |
| 7 comments | |
|
|
Deklan Webster
2019-07-10 16:19 #
anyone here bullish on state machine stuff? I want to be indoctrinated |
| 26 comments | |
|
|
Daniel Hines
2019-07-10 15:25 #
Thoughts on this?https://en.wikipedia.org/wiki/The_Power_of_10:_Rules_for_Dev… |
| 1 comments | |
|
|
Paul Biggar
2019-07-10 13:41 #
@Ghadi yes. It happens per user. That might not be how it always happens |
|
|
Srini Kadamati
2019-07-10 13:35 #
!here hey y’all, for those not in the #in-boston channel, I just made an announcement about the parameters for the next Boston meetup that @Garth Goldwater and I are trying to plan! |
|
|
Ghadi
2019-07-10 12:25 #
so the text expression (when it's present) gets evaluated at runtime |
|
|
Paul Biggar
2019-07-10 11:53 #
with the caveat that if test expression is blank (not filled in yet) or otherwise incomplete, we run a |
|
|
Paul Biggar
2019-07-10 11:52 #
given code a, adding a feature flag replaces it with ff-if (test expression) then b else a |
|
|
Paul Biggar
2019-07-10 11:51 #
its very similar to an if statement |
|
|
Ghadi
2019-07-10 11:40 #
@Paul Biggar |
|
|
Ghadi
2019-07-10 11:16 #
AKA when does execution decide which branch to take? Or is that decided/elided at "deploy" time |
|
|
Ghadi
2019-07-10 11:15 #
when does the "test" for a flag get evaluated? |
|
|
Ghadi
2019-07-10 11:15 #
semantics mostly |
|
|
Paul Biggar
2019-07-10 10:54 #
@Ghadi You mean the UX, visuals, or the semantics? |
|
|
Ghadi
2019-07-10 10:40 #
(someone please chide me if I'm in the wrong room) |
|
|
Ghadi
2019-07-10 10:39 #
@Paul Biggar what do Feature Flags look like in AST? |
|
|
Jonathan Schuster
2019-07-09 14:35 #
Speaking of conferences, anyone else here going to Curry On in London next week? |
| 8 comments | |
|
|
Steve Krouse
2019-07-09 08:14 #
Just booked my flights for Strangeloop! Maybe we create a #strangeloop-2019 channel if there are enough of us. Very honored and excited to be introducing @Ellen Chisa and @Paul Biggar for Dark's launch. Come join if you'll be there -- RSVP here: https://darklaunch.splashthat.com/ |
| 7 comments | |
|
|
Benjohn Barnes
2019-07-08 04:46 #
I’ve run in to [Automerge](https://github.com/automerge/automerge) this morning. It has a mention in the channel history, but given how exciting I find it, I think it’s worth mentioning again. The technology itself is really interesting, but its principles, ideas and direction are maybe even more interesting. TLDR: it provides a distributed JSON style document store that’s happily “offline first”. Changes made at one node can be propagated to others over any desired medium (Flash disks or network), where they’ll be combined. It has some support for relational style data in the form of a “table” type. Sequence types allow collaborative insert and removal without conflict. IMHO something providing functionality like this will be pretty vital to the future of computing. I envisage we’ll move to keeping programs in a database like this, along with other information such as chats, code review, issue trackers, wiki, ui designs, … basically all the data we use as we develop. It’ll also make sense as a store for all user data: not walled in by a single tool, but freely usable and updatable from any application view on to it. I’m just looking through some internal details documented here: https://github.com/automerge/automerge/blob/master/INTERNALS.md and hoping it’ll make enough sense that I might be able to start on a swift implementation. |
| 11 comments | |
|
|
Mariano Guerra
2019-07-08 02:47 #
http://www.felienne.com/archives/6330 |
| 4 comments | |
|
|
Kartik Agaram
2019-07-06 22:22 #
@Tudor Girba's Glamorous Toolkit on Hacker News: https://github.com/lukego/blog/issues/20 |
| 1 comments | |
|
|
Andreas S.
2019-07-04 07:16 #
https://www.youtube.com/watch?v=KxeHGcbh-4c |
|
|
Andreas S.
2019-07-04 07:16 #
interesting talk from ed kmett |
|
|
Stefan Lesser
2019-07-03 08:23 #
Beyond LLVM: >"The MLIR project aims to define a common intermediate representation (IR) that will unify the infrastructure required to execute high performance machine learning models in TensorFlow and similar ML frameworks. This project will include the application of HPC techniques, along with integration of search algorithms like reinforcement learning. This project aims to reduce the cost to bring up new hardware, and improve usability for existing TensorFlow users." https://github.com/tensorflow/mlir |
| 3 comments | |
|
|
Stefan Lesser
2019-07-03 08:15 #
>"Alexia Massalin’s 1992 PhD thesis has long been one of my favorites. It promotes the view that operating systems can be much more efficient than then-current operating systems via runtime code generation, lock-free synchronization, and fine-grained scheduling. In this piece we’ll only look at runtime code generation, which can be cleanly separated from the other aspects of this work." https://blog.regehr.org/archives/1676 |
| 2 comments | |
|
|
Stefan Lesser
2019-07-02 07:48 #
Although not exactly packed with practical knowledge or actionable advice, this foreword by Kevlin Henney captures a mood that is inspiring a positive future of programming — by looking at the past in a new light: https://medium.com/@kevlinhenney/legacy-reclaiming-the-word-93ec2a330ef1 (Don’t know anything about the book. It was just the foreword that caught my attention.) |
|
|
Deklan Webster
2019-07-01 17:38 #
Are people here generally aware of Cell lang? I searched on here and saw only a couple comments about it (in the history that I can see). I found it last night while searching for langs with reactivity built-in. It references stuff that I'm only familiar with from this community: Out of the Tarpit paper, importance of relational model outside SQL. http://cell-lang.net/ |
| 10 comments | |
|
|
Stefan Lesser
2019-07-01 04:13 #
In case you fell off the thread about note taking: |
|
|
Duncan Cragg
2019-06-30 04:30 #
Been scanning the Android Play Store for end-user programming apps in order to find my target audience and market. Found a few surprisingly active apps and communities, some with millions of downloads and hundreds of user-contributed mini-apps. These all come with visual programming interfaces, showing that there's life in that approach for a mass non-tech user market beyond edtech, and for a post-Excel user community. There's Tasker, Macrodroid and Automate for device automation, which have evolved into quite general-purpose programming ecosystems, with active forums and user-contributed content. There's Airtable, MobiDB, MementoDB which combine databases with varying degrees of spreadsheet-style programmability. There's Pocket Code, Roblox and Ready Maker, for writing your own games, and Sketchware for writing your own games and apps. Roblox has a very active (teen, Lua) programmer community. Pocket Code also has a very active sharing community. So these are the competition for my own project, and probably for anyone else here writing a mass-market, mobile-ready system for non-techies to program? |
| 33 comments | |
| # |
Daniel Garcia
2019-06-29 23:18 #
Shared here sometime ago. Extensible Programming for the 21st Century, December 27, 2004 https://queue.acm.org/detail.cfm?id=1039534 |
|
|
Deklan Webster
2019-06-29 16:48 #
I have a question which is a bit mundane for this channel, but people here are exceptionally savvy so I can't resist. Does anyone know a language with the following qualities: |
| 65 comments | |
|
|
Drewverlee
2019-06-26 15:31 #
Has anyone read "the little typer"? Is it a good place to start to get an idea of the cutting edge of type systems? I'm not looking for anything practical like haskell, I'm just curious how seamless types can be. my wish list would be that I want them to be inferred, extensible, composible, I should also get generative testing for free. |
| 6 comments | |
|
|
Ivan Reese
2019-06-25 19:36 #
I'm really struggling with Conal's FRP — building systems as compositions of continuous functions — functions that take and return real (that is: infinitely precise) numbers. I'm building a visual programming language where the semantics of the language depend on the measurements of the lengths of lines. The language is live, and reflective (in that code can be self-modifying), and allows for evaluation both forward and backward in time. Determinism is very important. In this Twitter thread, I outline a problem — https://twitter.com/spiralganglion/status/1143704642997506049 — How can I compare the lengths of lines, deterministically, without resorting to discrete values? If I use some sort of alternative representation (eg: a function that, when evaluated, produces a value for comparison), how do I do it without running smack into the halting problem? I'd love it if folks could weigh-in on this. |
| 37 comments | |
|
|
Ivan Reese
2019-06-24 00:01 #
|
| 5 comments | |
|
|
Edward de Jong
2019-06-23 23:22 #
Group theory has been incredibly successful in Physics; especially atomic physics and crystallography. Group theory has been almost useless in programming. When you are trying to puzzle out a mysterious structure that you propose has symmetry, group theory can prove out your hypothesis. The Turing/Von Neumann computer with its mutable state is decidedly an asymmetric system, and thus group theory doesn't do much for you. I spent years studying abstract algebra hoping to find some wonderful nuggets, but i actually found that if you merely study the great software inventions of the past which have been neglected or ignored for usually poor marketing or timing or political reasons, you will find more gold there. Whether it be the original Visicalc, its successor TKSolver, Modula-2 and its successor Oberon 2, or even APL, PL/1, PROLOG or Spitbol or Icon, there are enough new ideas 30 years old to build an empire... As we speak, the REBOL language is being reborn into RED, and Nenad is doing a first class job on that clever piece of work. |
|
|
Edward de Jong
2019-06-23 23:15 #
Category theory is a dry hole IMHO. If you look at the main theorems of Category theory, you will find a niche of abstract algebra, that seems to have very little relevance to programming. see https://mathoverflow.net/questions/83437/the-main-theorems-o… for a list of the main theorems. I defy you to make a better interactive graphics program using any of those theorems. Frankly speaking the Turing/Von Neumann computer that we have used for the last 50 years is so simple that mathematicians have almost zero interest in studying the incredibly deep problems that beset the authors of large programs. Excel has had a closed arithmetic for over 25 years, yet i can't think of a general purpose language with this feature. Sadly mathematicians today content themselves with mostly inventing their own problems, and thus all the big products in the industry continue to have hundreds of thousands of unrepeatable bugs, and estimates are still way off, and bug fixes continue to break working code with ease. |
| 18 comments | |
|
|
Daniel Hines
2019-06-23 19:38 #
Also, is there a good “Why Logic Programming” talk/article? Something aimed at general audience developer’s? Preferably something that doesn’t point to Prolog as the end-all-be-all of LP. |
| 4 comments | |
|
|
Daniel Hines
2019-06-23 18:56 #
Suggestions for learning group theory? I want to better understand how semirings can be applied to database provenance… but I have no clue what a semiring is (or a ring, or a group, etc.). Video/audio course is preferable! |
| 2 comments | |
|
|
Deklan Webster
2019-06-22 12:43 #
This might be a little off-topic. What do you all use for personal-knowledge-management, note-taking, etc? I'm not happy with my lazy Evernote setup. Just searching around, people mention: Notion, Dynalist, Spacemacs + Org-mode, Vimwiki, Zimwiki, TiddlyWiki, Standard Notes, etc, etc. Anyone wanna share their setup for these or others? |
| 54 comments | |
|
|
Benjamin San Souci
2019-06-22 10:03 #
Hey everyone, I’m new here and was hoping to meet you all today but is the meetup still happening? I don’t see the event page anymore |
| 6 comments | |
|
|
Garth Goldwater
2019-06-21 12:10 #
unrelatedly: are there any beginner-friendly introductions to call-by-push-value out there? |
|
|
Srini Kadamati
2019-06-21 12:01 #
are there any good definitions of end-user programming out there? |
| 7 comments | |
|
|
Kartik Agaram
2019-06-21 11:53 #
One morass I repeatedly see conversations fall into is trying to make generalizations about "programming". The discussion about "most time spent programming" is like this. And also the discussion of static vs dynamic types above. Programming is a huge field! Indeed, as it eats everything it's better seen as an aspect of all fields of endeavor. Like reading. Or history. Try to make a valid statement about "most time spent performing arithmetic", and hopefully it's clear how silly such statements are about programming. What we should be focusing on is domains. Games require very different languages and libraries and processors from scientific simulations, compilers have their own requirements. Even the category of "web app" is huge, because web apps can do many things. I work on deployment tools in my day job, and the domain has certain properties whether you create commandline tools or GUIs or web apps. (We've done them all.) The challenge of end-user programming isn't to figure out the smallest set of things people need. I promise you programming will overflow any box you put it into. No, we have to meet people half-way in each domain separately. |
| 3 comments | |
|
|
Ivan Reese
2019-06-21 11:06 #
@magicmouse94937 > Most of the time spent programming is fixing errors, and anything that helps reduce programmer error should be encouraged. What does it mean to multiply PI by "hello"? That doesn't fit my experience in the slightest. Most of my time spent programming is figuring out the design of my system. The most time-costly class of "error" would be uncertainty about what exactly I want to build, which manifests as building something experimentally, playing with it, realizing it's not quite what I want, repeat. For instance, types can't help me decide if I want to implement my graphics library using SVG or WebGL. Sure I make errors — we all do — but I discover almost all of them almost immediately, and they're trivial to fix. Something like PI multiplied by "hello" isn't nearly as nefarious as "I misunderstood the linear algebra and now I'm getting weird looking results when I convert a rotation into a skew+scale", which I don't believe a typical type system can help with. |
| 11 comments | |
|
|
Wouter van Oortmerssen
2019-06-21 10:02 #
@Alan Johnson that intuitively makes sense but in practice this doesn't seem to happen. While managed languages don't have to worry about issues like aliasing in C++, so in theory they could be faster, in practice they never go that far. The levels to which a compiler like LLVM can collapse both code and data in C++ to almost nothing is crazy, nothing in the managed world compares. Languages like Java have their own optimisation challenges, e.g. as soon as escape analysis fails it gets very inefficient. |
| 33 comments | |
|
|
Srini Kadamati
2019-06-21 10:01 #
IMO I think what’s missing a bit here in this conversation is starting with software and working backwards to hardware. There are some great stories in the earlier days of computing where people were creating hardware implementations of VM’s to be able to efficiently run high level languages (like smalltalk, etc). This removes some of the false dichotomy around high level and low level languages. Ultimately, you just want good speed and decent control and if you can get that with a HLL and a good hardware VM … well! This also meant when the floodgates to commercialization opened, microcomputers with cheaper hardware dominated and didn’t support these higher level languages (since the custom hardware was often quite pricey to make languages like smalltalk work quickly). disclaimer: this is all my understanding from stories / hearsay from talks. Would def love more references to this kinda stuff |
|
|
Alan Johnson
2019-06-21 09:46 #
an interesting counterpoint is that low-level languages don't necessarily map to the underlying details of the machine in reality. in some cases, they may give the programmer the illusion of control and optimization, where a more managed language can sometimes make better decisions in the compiler and/or run-time |
|
|
Miles Sabin
2019-06-21 09:41 #
Not to mention power consumption. |
|
|
Wouter van Oortmerssen
2019-06-21 09:11 #
@magicmouse94937 "Nowadays with gigantic memory stores, worrying about how big a box to store is of minor importance for 99% of programs" I've heard some variant of this statement for 25+ years now ("computers are / will be faster so maximum efficiency is less important"), and it always turns out to be wrong. For one, as computers grow in ability, we simply want to do more complex things with them. Give programmers space, and they will fill it up until things get slow. A more efficient language gives more room to grow. More deeply, a faster language can be said to be more "high level" than a slower language since the programmer doesn't need to worry about performance consequences so much. My simple, brute force C++ algorithm may be smaller, simpler and faster than your complex Python algorithm :slightly_smiling_face: |
| 12 comments | |
|
|
Stefan Lesser
2019-06-21 03:05 #
Back before Swift, the top reason why apps submitted to the App Store got rejected was crashes on launch and during the short period the app would be looked at during review. Most of these crashes were caused by simple programming errors that are easy to make in (Objective-)C: forgotten nil-checks and type mismatch. Turns out many developers never test their apps at all, and never run them on a device (only in the simulator). Not the most obvious way to solve this problem, and certainly not the easiest way, was to introduce a language with a stronger type system that would flag these problems at compile time. If you can choose between (a) trust developers that they learn what they need to learn, write their tests, and ship quality software, or (b) build an infrastructure that categorically makes such errors impossible, a rather large company chose to go with (b). And the top reason for rejections now is App Completeness, basically an app doesn’t do everything the marketing description says it does. A lot of Objective-C developers complain about how they lose flexibility with Swift in hacking something together quickly because they have to satisfy the type system, that the compiler diagnostics aren’t always helpful, and compile times are much longer. These are all valid criticisms and part of the trade-off, but also things that are being addressed and will likely only get better in the future. If you’re interested in a less academic and very practical and business-oriented environment where a transition from dynamic to static typing is taking place right at this moment, Swift and iOS development are an interesting case study to look at. Also interesting: the effects this has on API design for libraries and frameworks — after five years Apple just released the first Swift-only frameworks designed to take advantage of Swift’s unique features. The new Swift APIs are fundamentally different from the old Objective-C ones: favoring composition, value types over reference types, static over dynamic, protocols over inheritance hierarchies, etc. — it’s super interesting to see the design, and the feedback. Of course, not everybody is happy with such change. And it’s a big bet on a (more type-safe) future and nobody knows how it’ll work out… |
| 12 comments | |
|
|
Drewverlee
2019-06-21 01:12 #
I'll see myself out of this conversation, i need to time to work around the topic on my own. I hope to learn some category theory then dabble in a language that employee s it. My frustration comes from lacking a deeper understand of how it might help and a sense that only having that deeper understanding would make the tool useful. I'm not going to get that tackling the question head on. |
|
|
Drewverlee
2019-06-21 00:47 #
And if you add the wrong number to pie, your types match and your system breaks down else where. |
|
|
Edward de Jong
2019-06-21 00:34 #
It is one of the most insidious flaws of JS that you can add together pi and "hello" it will become the string "3.14159265358979hello"; i would have preferred a crash to such a nutty result. |
| 1 comments | |
|
|
Edward de Jong
2019-06-21 00:32 #
Type declarations have a twofold purpose; one is to let the compiler know how big a box to create to store the value, and the other purpose is to reduce programmer error. Nowadays with gigantic memory stores, worrying about how big a box to store is of minor importance for 99% of programs, and so the real benefit is about reducing programmer error. Most of the time spent programming is fixing errors, and anything that helps reduce programmer error should be encouraged. What does it mean to multiply PI by "hello"? if you can catch an error at compile time, it eliminates the potentially crazy result that the computer might generate from an operation like PI * "hello". |
|
|
William Taysom
2019-06-20 18:24 #
With twentyish (yikes) years of experience with typed functional programming and dynamical languages, my feelings are really complicated. Languages with principle types are really cool: the compiler can infer all the types from a well formed program; but they don't exactly have the amount of flexibility that you might like. Sometimes you'd like "types" that correspond to stronger propositions about programs, but then an expression can have multiple "types" depending. Then you get into dependent types, gradual types, subtypes (covariant, contravariant), type classes, generalized algebraic data types, and it doesn't feel quite so nice or elegant anymore. |
|
|
Daniel Hines
2019-06-20 18:09 #
We’ve got some pretty sharp minds in type theory wandering around this channel. I’m more and more convinced that static types are powerful, and that a language without them is going to be missing on a dimension of expressiveness. But I use Typescript at work, and its gradual typing system is pretty sweet. From a type theorist’s perspective (I know oh so little about type theory, so be gentle with me), does gradual typing get a seat at the table, or do type theorists look at gradually typed languages like functional programmers look at Javascript: sure, some of the same primitives are there, but you’re severely handicapping yourself in expressiveness and power. |
| 5 comments | |
|
|
Garth Goldwater
2019-06-20 16:41 #
anyone interested in types and/or macros who hasn't seen this talk is in for a treat https://youtu.be/5QQdI3P7MdY |
| 15 comments | |
|
|
Drewverlee
2019-06-20 13:42 #
It seems to me that, in my current development environment, i have one primative for two seperate tasks tasks 1. naming some functionality to abstract its meaning 2. sharing that functionality. There are times when i need the second but not the first. e.g I need to pass a subsection of a vector to two different "places". However, naming a subsection of a vector doesn't really offer a good abstraction because the functions over the vector are as high level as possible. Has anyone tackled this problem directly? It seems like a UI issue, i want my editor to show the functions, but if i change one the other should udpate. with a UI interaction to signify im changing it in more then one place. It would probably be wise to assign a name as well, given that not everyone will be using this UI. |
| 5 comments | |
|
|
Garth Goldwater
2019-06-20 13:40 #
has anyone checked out http://mesh-spreadsheet.com/ ? |
| 9 comments | |
|
|
Deklan Webster
2019-06-20 11:55 #
The above discussion about dynamic vs static typing is very interesting. I personally favor static typing (and many here seem too also). But, recently, I've become curious about what's making the Clojure, Elixir, etc people so damn happy. Or, in other words, I'd like to hear a steelman of "dynamic typing is awesome". Can anyone help? |
| 33 comments | |
|
|
Daniel Hines
2019-06-20 06:59 #
What is the “ununify api” mentioned in the podcast on occasion? A quick Google search didn’t yield anything. |
| 6 comments | |
|
|
Scott Anderson
2019-06-19 22:53 #
So... V is available as a public release (currently MacOS only, no source) https://vlang.io/ |
| 6 comments | |
|
|
Shalabh
2019-06-19 19:29 #
https://robert.kra.hn/posts/2019-06-20_developer_efficiency.html |
|
|
Kartik Agaram
2019-06-19 18:06 #
Ranty challenge after a long day for anyone working on visual languages: before trying to support running programs, aim for a simpler domain like figures. Something with the controlled placement of SVG, the high abstraction of http://plantuml.com (which supports lots of different kinds of diagrams -- and the abyss of all possible combinations of them) and the WYSIWYG UI of MS Word or draw.io (which I find myself frequently fighting with). Why the heck doesn't this exist yet? How does every drawing tool manage to suck without bound? |
| 15 comments | |
|
|
Gregg Tavares
2019-06-19 12:46 #
Seeing Code Execute - Useful in the real world or only in demos? I've seen the Learnable Programming - Bret Victor paper and all the examples. It looks great but impossible to actually implement in reality, at least as far as I can tell there is no way for a program to divine what kind of UI/UX/Display is best for a given piece of code so while the page and examples are hugely inspiring I can't see how the ideas can actually be applied to actual code. Similarly there are other systems that try to show state over time. I've only ever seen small demos. In real code I work with 16million voxels or 300k vertices and computing matrixes for 2037 scene node graphs. My impression is that pretty much every code execution visualizer I've seen is overwhelmed by anything but the very simplest examples. Even Chrome's dev tools try to highlight all the values on every line of code but of course those values are just from one iteration and yet they are already pretty cluttered. So, what tools have you used in actual production code that stick out to see execution? Maybe the idea is these tools only work with small data and small iterations so you use them to debug some small subset of a problem and once you've confirmed it works then you put your working code back into your real app with real data. The thing for me though is that the hurdle of pairing down my app into something small enough to use in one of these tools is really really high. I basically have to not be able to solve the issue any other way before I'll finally spend an hour or 4 building a MCVE to run in a visual execution tool. Even if it's not big data or big iterations it's big code. I work on some million line program and the code execution visualization environment just can't handle it so I'm back to the hurdle of extracting enough code to make an MCVE which is usually too big a hurdle. Is that other people's experience? |
| 33 comments | |
|
|
Scott Anderson
2019-06-19 09:09 #
Does anyone have a strong argument for people that insist dynamic types are better or easier for novice programmers or non-programmers than explicit types? |
| 32 comments | |
|
|
Daniel Hines
2019-06-18 11:12 #
How far away are we from programming on an iPad? Do any of our intrepid language designers have anything working? |
| 32 comments | |
|
|
Kartik Agaram
2019-06-18 09:33 #
A pretty radical take on the future of programming: https://youtube.com/watch?v=I4flQ8XdvJM |
| 71 comments | |
|
|
Andreas S.
2019-06-18 07:56 #
top context: https://twitter.com/garybernhardt/status/1138989124990279681 |
| 9 comments | |
|
|
Andreas S.
2019-06-18 07:55 #
https://twitter.com/garybernhardt/status/1139289269057441792 |
|
|
Andreas S.
2019-06-18 07:55 #
some interesting stories from the trenches: |
|
|
Adriaan Leijnse
2019-06-18 06:11 #
Here's an abstract I submitted to the ICFP student research competition. I hope it's intelligible and not too vague. I'd be interested to hear your comments and suggestions if you have any. |
| # |
Adriaan Leijnse
2019-06-18 06:09 #
Hi all! I'm a PhD student working on a distributed FRP, and I recently found @Steve Krouse’s essay and it's amazing that we essentially arrived at the same idea and (human) language to talk about denotative distributed programming—very encouraging :slightly_smiling_face: |
| 3 comments | |
|
|
Andreas S.
2019-06-18 00:47 #
Leibniz could indeed have used a friendly Slack :wink: I actually think we have still similar problems today, that is organizing people and resources around an idea. Open source brought a great leap forward in collaboration. But software does not exist in a vacuum. Because to see how even if you find people you want to collaborate and discuss with ( slack or others) the funding remains an issue. And there I do see that the whole crypto/Blockchain space can provide value. |
|
|
Mariano Guerra
2019-06-17 13:14 #
https://twitter.com/awbjs/status/1140683480038137856 |
|
|
Steve Krouse
2019-06-17 05:52 #
!channel just wanted to make sure everyone heard about the #category-theory theory study group. I've been having a ton of fun watching/reading Bartosz's Category Theory for Programmers. Finally I understand where some of the more obscure FP stuff comes from -- it's cool! Also wanted to draw everyone's attention to the *for Programmers* part -- such a luxury to learn math from a more familiar perspective for me. The next meeting of the group discussing the first chapter is Thursday :thumbsup: |
|
|
Garth Goldwater
2019-06-16 12:17 #
hey fellow concatenative nerds—have any of you played with ait? https://functional-art.org/2017/ait |
|
|
Stefan Lesser
2019-06-13 11:46 #
In case you fell off the category theory thread from earlier, we just had our first meeting and also have our own channel now: #category-theory. If you are interested, please come and join us! |
|
|
Kartik Agaram
2019-06-13 11:39 #
A comment by Shalabh[1] got me to go check out red-lang.org after an interval, to see how it's going. And I just noticed that they're working on a projectional editor for Red called Values. Still no public doc about it. The repo is at https://gitlab.com/rebolek/values, and there seems to be a short gif at https://www.red-lang.org/2019/02/january-2019-update.html. A little more brief discussion in https://www.red-lang.org/2018/11/redcon-1-and-ethereum-devcon-4-world.html. But it's all very tantalizing. Has anyone else seen or read about it? [1] 1.560445.html… |
| 8 comments | |
|
|
Steve Krouse
2019-06-13 04:12 #
Semi sarcastic request for startup: apply what we already know about creating a great developer experience (mostly functional, live, debuggable) towards an creating an alternative to Ethereum, and use all the :moneybag::moneybag:you earn to fund exploratory research (in the spirit of Protocol Labs) |
| 31 comments | |
|
|
Carlo Kok
2019-06-13 03:52 #
at some point I had a nice article on the most common forms of SSA optimizations and how to do them. But i lost the link, does anyone happen to remember this? Wasn't here, but I figure some of you might actually know it. |
| 5 comments | |
|
|
Garth Goldwater
2019-06-12 09:07 #
heads up for boston-based folks: @Srini Kadamati and I are working on resurrecting the Boston meetup over in the #in-boston channel |
|
|
Edward de Jong
2019-06-11 22:30 #
Stefan has brought up a very good point. There is some great older work that has been ignored almost completely, and the work for example by Prof. Wirth who worked not on objects but on improving data structuring power, in MOdula-2 and Oberon has been ignored. And when you bring it up, its age automatically disqualifies it. Even though for example, the module system of Modula-2 which allowed separate compilation without reprocessing header files is years (if not decades) ahead of what C++ promises. |
| 7 comments | |
|
|
William Taysom
2019-06-11 19:49 #
@Cyrus Omar listening to the podcast, I happen to be reading through "Live Functional Programming with Typed Holes" at the same time. So glad to see progress on the "gap" problem. Delightful. Been mulling over it every now and then since my own CMU days. |
| 5 comments | |
|
|
Stefan Lesser
2019-06-11 12:13 #
Recent events made me once again pick up a pattern that I think is very common in programming or tech communities: Some new technology is demonstrated, it gets a lot of attention, and then some people start commenting "I don't get it!? What's new about this? [Older technology] had this [time] ago!" You can find it right here in this forum, on Twitter, and pretty much anywhere. In places like HN it seems an even more typical reaction but it seems an extremely popular reaction in tech circles. Why is that? I find this a genuinely interesting question to ask, because I think it tells us something about our culture and our values. Why put the novelty of a technology above all else? Comments like that appear like something that isn't new doesn't deserve attention. But how can we make progress, if we can't build on something existing? Just thinking a little about this, I come to the conclusion that "new" is actually very difficult to define. And isn't pretty much everything "new" we invent just a (maybe) new combination of existing ideas anyway? (Everything is a remix) I'm not bringing this up to call out the people who do this — heck, from time to time I catch myself thinking like that. And I don't know why. I suspect there's some lizard-brain evolutionary territory thing going on, which I don't think is healthy for us as a community. Shouldn't we celebrate that something old but apparently useful was picked up again, given a new spin, perhaps infused with other ideas, or made available to another community beyond the original one? Isn't that the progress we're looking for? |
| 20 comments | |
| # |
USLACKBOT
2019-06-11 11:33 #
This message was deleted. |
| 2 comments | |
| # |
Daniel Garcia
2019-06-10 19:33 #
Finally got to watch this talk shared some time ago. I really liked it, totally recommend watching https://www.youtube.com/watch?v=pW-SOdj4Kkk |
| 2 comments | |
|
|
Shalabh
2019-06-10 11:12 #
https://queue.acm.org/detail.cfm?id=1039534 |
| # |
Kartik Agaram
2019-06-09 21:57 #
This seems like a useful list. |
| # |
Kartik Agaram
2019-06-09 21:55 #
I was searching for 'visual programming' today and came across this paper shared by @Jonathan Edwards long ago (the actual post sharing it is beyond our search horizon) |
|
|
Kartik Agaram
2019-06-09 18:45 #
This seems relevant to some recent conversations: https://mastodon.social/@akkartik/102244739087690935 |
|
|
Vadim Zaliva
2019-06-09 10:26 #
Programming languages mimic human language facility. This is something very natural, which we learn from childhood: grammar, alphabet, syntax, etc. It is not a limitation of the text-terminal era - it is a natural way to express things. Some people even argue this is hardcoded in our brains (see Universal Grammar). So when thinking about visual programming, I wonder if there is an example of the successful sohphisticated visual environment for expressing complex ideas, comparable to human language. Technical drawing? Circuit schematics? Given a few decades of attempts to develop a visual programming environment I am yet to see the one which would impress me. Most of the attempts fall under the category "making simple things easy but complex things impossible". I do not want to discourage anybody from trying to work in this direction, but I want to make a point that "text" in languages is not a legacy limitation from mainframe times. |
| 14 comments | |
|
|
Sébastien
2019-06-09 06:52 #
I was looking for a definition of "projectional editing" and found that article by Martin Fowler: https://martinfowler.com/bliki/ProjectionalEditing.html -- it captures the essence of what I think is the next step in programming language implementation: make the syntax one of the UIs to the program, and make the programming language a complete OO model of its semantics. Pretty much all modern languages have a fairly detailed AST/IR hybrid, but these structures are not designed for interactive editing, they're designed for running transformation passes within the compiler. |
|
|
nicolas decoster
2019-06-09 01:01 #
Maybe we use "visual" only as an opposition to "text" programming. But we actually mean "some more expressive representation than raw text". And as "not blind" people we first think of visual representations. In fact we are looking for other way to present programs and to interact with them, and get rid of the "text" disadvantages. |
|
|
Ivan Reese
2019-06-08 17:17 #
The future "visual" languages I like to imagine are all about making execution something that the programmer participates in. One way to do that is to reify concepts that are implied or invisible in current tools — things like the "current location" of the instruction pointer, the path(s) it followed to arrive there, and the path(s) it'll take in the future. Showing those things graphically is one way of rendering that concept. You can also render it verbally, by giving the things in your program place names or attributes that convey the right meaning when spoken. Think of the difference between a book (say, Hitchhiker's Guide) and a text adventure game (say, the Hitchhiker's Guide game). A book is static, a text adventure game is participatory. They both tell the same story, and both depend on the reader/player to advance the story, but the game allows the player to consciously shape how the story unfolds for them. The fact that the text adventure game is "rendered" in text is just an implementation detail — you could also make a version of the same game with the same narrative and gameplay rendered graphically. One could argue that Myst is the 3d rendered equivalent of a text adventure game. You could also make a text adventure game equivalent with a purely spoken interface. I once did the score for a theatrical production where the whole room was the stage and the audience sat on pieces of the set. The audience members' presence was part of the story, and if the audience did something then the actors responded to it — to a very limited extent, the theatre equivalent of a text adventure game. All of these media are different ways of rendering a story, and for each kind of rendering there can be a participatory version (game/interactive) and a non-participatory version (novel/movie/audiobook). Same goes for programming. Right now, we're only able to participate in the execution of our software via the UI that we create for it, and whatever debugging tools our environment permits. Live Programming tools let us participate a little bit more. I'm interested in taking participation a lot further. Using (eg) "nodes and lines" to render this programming experience is just an implementation detail. You could offer the same hyper-participatory experience using text, or speech, or holograms, or Braille. The reason I'm generally enthusiastic about the "visual" programming is because I'm a visual artist, and I have a nostalgic love for complex GUI tools like Maya, so that's the aesthetic I'm interested in first. If I were blind, I'd still be chasing the same participatory vision, but I'd be building a spoken interface first. |
| 5 comments | |
|
|
Michael Arntzenius
2019-06-08 13:32 #
> it might even be true that visual/positional reasoning is necessary in any formal language It's definitely not true that visual reasoning is necessary for programming/formal languages, since blind people can program just fine. This is one way in which it seems to me more visual approaches to programming are a step backward even if/when they work - they make it fundamentally less accessible to blind folks. On the other hand, would we deny engineers the right to use diagrams in order to make engineering more accessible to the blind? Probably not. And it's not as if we don't often use diagrams or visual notation in explaining our code already. So, yeah, I'm conflicted. I'm not sure what exactly you mean by "positional" reasoning. If you just mean stuff coming before/after other stuff, sure, that seems necessary, or at least I can't see how to do without it :stuck_out_tongue:. |
| 4 comments | |
|
|
Garth Goldwater
2019-06-08 12:36 #
definitely a lot of good points here (how had I not heard of kodu?)! |
|
|
Chris Granger
2019-06-08 11:46 #
Doing it with glyphs makes naming both a semantic and a visualization problem |
|
|
Chris Granger
2019-06-08 11:45 #
or in other words, naming things is hard :slightly_smiling_face: |
|
|
Chris Granger
2019-06-08 11:45 #
if you wanted to make the glyphs more directly related to their action, you'd have to come up with a semantics for composition |
|
|
Chris Granger
2019-06-08 11:44 #
APL allows you to define new terms, but you're limited to the alphabet available to you |
|
|
Chris Granger
2019-06-08 11:44 #
That was one of the places that Kodu fell down |
|
|
Chris Granger
2019-06-08 11:44 #
I think the main thing you'd have to solve to make something like that more practical is to figure out how glyphs compose into meaningful new glyphs. |
|
|
Chris Granger
2019-06-08 11:41 #
Factorio is an example of this as well, though moving away from glyphs and more towards assembling machines directly |
| 1 comments | |
|
|
Chris Granger
2019-06-08 11:41 #
You might really enjoy opus magnum then :slightly_smiling_face: |
|
|
Garth Goldwater
2019-06-08 11:40 #
omfg I thought my friend group was the only one that played roborally! that game rules and is like a case study in programming difficulty |
|
|
Chris Granger
2019-06-08 11:38 #
The board game RoboRally is another one |
|
|
Chris Granger
2019-06-08 11:38 #
Not a call out at all, just drawing associations. Check out Opus Magnum and Kodu/Project Spark - they have programming symbols that sound like what you're talking about. |
|
|
Garth Goldwater
2019-06-08 11:36 #
hearthstone uses that technique to a lot of success with non-programmers |
|
|
Garth Goldwater
2019-06-08 11:36 #
honestly, I feel called out lol. but I mean with learnable glyphs that are pictorial rather than just trying to make special characters look better-and a reinforcement technique—eg explanation tooltips on hover |
|
|
Chris Granger
2019-06-08 11:30 #
that's basically APL :slightly_smiling_face: |
|
|
Garth Goldwater
2019-06-08 11:26 #
on the topic of visual programming languages: can we just acknowledge for a minute that even textual programming languages ARE extremely visual? whether it's sticking things inside parentheses, function arguments, indentation, the glyph % for modulus, or using the same syntax for structuring/destructuring data by switching the right hand side to the left hand side, programming languages use visual thinking all the time—they're just using a pretty impoverished medium it might even be true that visual/positional reasoning is necessary in any formal language since the rules for what terms can follow or include each other require positional rules, not just grammatical ones I think there's a pretty fruitful zone of research on more compact visual representations that look more like glyphs and less like diagrams—since diagrams are usually used for conceptual overviews rather than the nitty-gritty of how stuff gets done. something along the lines of sparkcharts or the variety of icons used in games (whether mana symbols in magic the gathering, HUDs in first person shooters for stuff like ammo and energy, or resource count icons in real-time strategy games. |
|
|
William Taysom
2019-06-07 18:06 #
In as much as boxes and nodes systems reflect the complexity of what you're doing, perhaps a lack of scalability goes to show that the complexity is visible whereas we're better at hiding it in a textural environment! |
| 4 comments | |
|
|
Kartik Agaram
2019-06-07 11:32 #
I've made the problem harder for myself because I want all programming to involve tests. (We've chatted about this before, Chris: https://news.ycombinator.com/item?id=10073578#10075306) So far in my experience, teaching the value of tests to non-programmers is still really hard/unproven. I can be convinced it isn't essential. Maybe non-programmers don't need to learn to write tests, but they may need to deal with tests others have written? |
| 14 comments | |
|
|
Chris Granger
2019-06-07 11:07 #
Yeah, lots to learn from game design there :slightly_smiling_face: |
| 6 comments | |
|
|
Kartik Agaram
2019-06-07 11:06 #
End-user programming should definitely involve gradually ramping people up on some of the essential methods programmers use to manage essential complexity. Start them off in a flat namespace, but gradually introduce hierarchy. |
|
|
Chris Granger
2019-06-07 11:05 #
We did multiple boxes and nodes systems very early on in Eve and they really didn't seem to scale well, which is not to say they don't fit certain problem domains really well, but they're not great generally (which may be a bad goal to begin with :wink: ) |
|
|
Chris Granger
2019-06-07 11:04 #
It's worth pointing out that in that large spreadsheet there was lots of modularization and abstraction, so I'm not sure your point holds. |
|
|
Doug Moen
2019-06-07 10:44 #
The lesson I learned from Chris Granger is that non-programmers get into trouble if you encourage them to use abstraction mechanisms. Nested scopes and all that. Decomposing a program into modules with information hiding and well designed interfaces is hard. Users are happy to use a flat programming model where all of their data is globally accessible. Granger mentioned an example of a user that built a single large spreadsheet (multiple gigabytes) modelling an entire company. The node and wire style of visual programming language that I mentioned is compatible with a flat programming model. You just need a zoomable interface that can handle large numbers of nodes. |
|
|
Doug Moen
2019-06-07 09:59 #
> The user was easily able to whip up something fairly complex (so far so good!) but then they ran into a problem where they said something like (pointing) "I want this value... here". I watched the video. Here's my response. Suppose you have a node and wire visual programming language, a dataflow language. Values flow into the input terminals of a node, are processed, and new values flow out of the output terminals. A typical program is just a canvas full of nodes and wires, a flow diagram. If the user thinks "I want this value... here", then it's easy. They just run a wire from the output terminal where the value is generated, to the input terminal where they need the value. There are no nested scopes here, all values are equally accessible, so there is no problem. We've solved the problem that Chris Granger identifies in the video, and we've done it using a pure functional visual programming language. |
|
|
Chris Knott
2019-06-07 08:35 #
Found it - https://youtu.be/5V1ynVyud4M It was this talk from around 5 min |
| 1 comments | |
|
|
Chris Knott
2019-06-07 08:31 #
@Doug Moen I will check out Curv - sounds promising from what you say. I will check it out as I have almost certainly tarred the whole of FP with the Haskell brush. I am struggling to find a clip from a talk that I think is relevant to support what I am saying. I think it is possibly in an Eve retrospective by Chris Granger. Basically the speaker talks about demoing a "new programming" type product to highly intelligent non-programmers. The user was easily able to whip up something fairly complex (so far so good!) but then they ran into a problem where they said something like (pointing) "I want this value... here". The value they wanted "there" was calculated deep inside nested functions and there was no way to "just move that value there" without a massive refactor. The speaker talks about how deflating this experience was because they realised it wasn't even easy to explain why they couldn't do that without introducing a ton of concepts like scope and stacks and whatever i.e. exactly what they wanted to avoid! I have experienced similar things with my wife who is clever and accomplished in a non-programming field. I can't even explain to her why I'm finding something difficult. I'll just be like (I need these numbers to in this window). This is not the same as algorithm challenges like Google Code Jam, where she can immediately understand why it is fundamentally hard to describe the solution, and might even be able to describe a solution with words and pictures herself. |
|
|
nicolas decoster
2019-06-07 08:09 #
I always thought that the choice of = as the symbol for setting things is confusing. In math it used it to define things not to fill things with something else that can change later. I would prefer the use = symbol for only equality comparison. |
|
|
Doug Moen
2019-06-07 08:08 #
I agree with your criticism of Haskell-like languages. To express iteration, while loops together with mutable local variables are much easier to understand than tail recursion, or programming with combinators. I picked up the former ideas pretty quickly when I was young, but it took me several more years to understand recursion. My language, Curv, is designed to be simple and easy to use. There is no shared mutable state, because that makes programs harder to understand. But there are mutable local variables, there are assignment statements (conditional and unconditional), and there is a while loop, because that's often the easiest way to implement iteration. I'm using Curv as a counterexample to your claim that FP is unnatural, and requires very strong mathematical ability. I think that applies to Haskell, which was designed by and for mathematicians. But it doesn't apply to the entire class of languages that lack shared mutable state. |
|
|
Chris Knott
2019-06-07 07:09 #
Basically the issue here is Python obscuring what happens inside the interpreter with an abstraction that clashes horribly (in some situations) with our intuitive understand of what the line b = a means |
|
|
Chris Knott
2019-06-07 07:07 #
I think my point is this is only unnatural because of the way it's presented to you. If the third line was mutate object 123 (you've named it both 'a' and 'b') then users would not find it's effects confusing. (Contrived example of course, but possible to imagine an IDE that actually presents this information) |
|
|
Doug Moen
2019-06-07 06:26 #
Python has shared mutable state. Modifying the contents of one variable can cause another variable to change. For example,
I think it is unnatural for the value of b to change when I modify a. I've seen lots of evidence on the internet that this is a source of confusion for novice programmers who are encountering Python for the first time. |
| 5 comments | |
|
|
Doug Moen
2019-06-07 05:49 #
> Why is shared mutable state considered bad? Isn't it an accurate reflection of the universe we live in? No, it is not an accurate reflection. SMS leads to spooky action at a distance. With SMS, I can nail together two pieces of wood in Toronto, and unexpectedly, a house collapses in Los Angeles. SMS enables unpredictable non-local effects. I can't rely on local reasoning to understand what a program is doing. |
| 61 comments | |
|
|
nicolas decoster
2019-06-07 04:49 #
I agree on the fact that it is better to make the programmer aware of what she is doing. And tricks like using a big global database as global mutable state, make it a bit complicated to use it, so one will use it less often and only when it is actually needed ? |
|
|
Chris Knott
2019-06-07 04:06 #
Why is shared mutable state considered bad? Isn't it an accurate reflection of the universe we live in? The problem with SMS seems to be that it allows for an explosion in possible execution paths that the programmer didn't anticipate. A more natural way to solve this problem might be to make the programmer more aware of what is actually happening, rather than limiting the use of SMS. I think this whole thing is a symptom of programming languages introducing parallelism after the "read-lines-one-by-one-and-track-state-in-your-head" paradigm of coding was already set in. If an IDE showed you a lockless function that mutates state, not as a clean one-by-one list of instructions, but as the bizarre tangle of spaghetti it actually is, people would avoid issues in a more natural way. Another way to think of this is two programmers sitting side by debugging the same function out loud... programmer 1: Ok... if x is less than 5, set y to 3 Yeah, this is kind of chaotic but it's actually, in a way, very "natural" and "easy to understand". Not easy to solve, but very natural to see that it's difficult to solve. Basically I think that mutating global variables are actually the most natural way for a human to understand procedures, and supposedly "clearer" methods like FP are only popular among people with very strong mathematical ability, who have also already internalized powerful abstraction abilities that they no longer realize are unnatural, and have also already experienced the difficulty of trying to understand parallelism with only their brains. These people welcome the unnatural constraints of FP with open arms. People coming to programming from the real world, do not (in my experience) welcome the constraints of FP at all. It's very interesting to me that Dynamicland appears (from afar, I've never been there), in it's pursuit of a more natural and "humane" programming, to have basically gone completely the opposite direction to FP. As far as I can tell the entire room/operating system operates on a single massive global database. |
| 11 comments | |
|
|
Garth Goldwater
2019-06-06 10:34 #
what do you all use for research tools? I've seen github issues/repos, googling, wikis, bookmarks, etc. I feel like one of the major problems in researching stuff like this is how scattered information and experiments are across papers, the web, this slack (lol) and am trying to work through how to improve the situation. pros and cons? both for discussion and as a kind of collaborative library of sorts (if that makes sense) |
| 20 comments | |
|
|
Ivan Danyliuk
2019-06-06 02:14 #
Hi all, and thanks for inviting here and glad my article on rethinking visual programming resonates. I haven't have time yet to listen to podcast, but looks like it's a good place for those questioning the way we program :slightly_smiling_face: |
|
|
Kartik Agaram
2019-06-05 19:42 #
This hits close enough to home to draw blood: http://www.berglas.org/Articles/ImportantThatSoftwareFails/I… |
| 22 comments | |
|
|
Prathyush
2019-06-05 17:40 #
I don't know how to describe this, but I am spellbound. This is how I think I might start to describe it — Anselm Eickhoff wrote a Rust → WebAssembly actor-based distribution framework (in the style of Erlang) that renders declarative graphics (like React) in WebGL using his shape-grammar library to create a procedural micro economy simulation game: https://aeplay.org/citybound |
|
|
Andreas S.
2019-06-05 03:36 #
How should GitHub work? |
| 2 comments | |
|
|
Andreas S.
2019-06-05 03:36 #
This is also really interesting: https://twitter.com/jasonrohrer/status/1136092621149880320?s=21 |
| 1 comments | |
|
|
Mariano Guerra
2019-06-05 01:53 #
users create worlds and share them |
|
|
Mariano Guerra
2019-06-05 01:52 #
https://www.playstation.com/en-us/games/dreams-ps4/ |
|
|
Corey Montella
2019-06-04 21:39 #
Many programmers don't tend to think of Excel as a programming language. Ask most any programmer what the most popular language is, and they'll answer with C++/Python/Java. Some may say SQL. But the answer is by far and away Excel. |
|
|
Srini Kadamati
2019-06-04 20:01 #
what I find interesting is how Excel is rarely mentioned in blog posts / articles about visual programming languages. Excel visualizes something interesting (data) but hides the “code”. Most VPL’s do the opposite and suffer I feel |
| 10 comments | |
|
|
Shalabh
2019-06-04 19:57 #
https://divan.dev/posts/visual_programming_go/ |
| 6 comments | |
|
|
Garth Goldwater
2019-06-04 14:34 #
don't know if anyone else saw this but I found a collection of references for the self programming language via Twitter: https://www.notion.so/Environment-and-programming-language-S… |
|
|
Garth Goldwater
2019-06-04 07:32 #
@prax08 what's N/E/W/S? having a lot of trouble googling it |
| 4 comments | |
|
|
Prathyush
2019-06-03 12:50 #
The way it encourages little components to be used to produce higher order components or distinct patterns for music generation seems to be much in line with what @Stefan Lesser has been talking about. Simple components which can be creatively repurposed for new things. Check out that N/E/W/S generators. |
|
|
Prathyush
2019-06-03 12:49 #
@Sébastien Talking about composable visual elements for music creation, I think Devine's ORCA is nothing short of magic/crazy genius: https://www.youtube.com/watch?v=RaI_TuISSJE |
| 2 comments | |
|
|
Sébastien
2019-06-03 11:36 #
Audio tools often have interesting UIs, here's one with composable visual elements: https://www.youtube.com/watch?v=zvPhIm6Ttd8 |
|
|
Scott Anderson
2019-06-03 10:42 #
Interesting blog on text input methods http://tbf-rnd.life/blog/2019/05/21/hello-world/ I'm a VR developer and extremely interested in end user creation on devices that don't usually have access to traditional keyboards, so it's kind of a gold mine. |
|
|
Prathyush
2019-06-02 16:48 #
Hey guys, this is an amazing group! Thank you for building it @Steve Krouse First time posting here, thought this was a really good read on designing direct manipulation: https://kevinlynagh.com/notes/dm-thoughts/ I think his method of reasoning comes from Daniel Jackson's work on conceptual design which is a very insightful line of thinking itself: https://sdg.csail.mit.edu/projects/conceptual |
|
|
Deklan Webster
2019-06-02 13:17 #
@Steve Krouse did you ever have time to look at those questions I had about FRP etc? :no_mouth: I can paste it here again if you lost them |
| 2 comments | |
|
|
Dan Stocker
2019-06-02 12:40 #
Is there any statistic out there about activity of communities like this, trying to reform coding, over time? Google trends doesn’t seem to be very helpful. |
| 3 comments | |
|
|
Steve Krouse
2019-06-02 06:42 #
Design Principles Behind Smalltalk by Ingalls There's a lot of gold in this, including: "An operating system is a collection of things that don't fit into a language. There shouldn't be one." https://www.cs.virginia.edu/~evans/cs655/readings/smalltalk.html Thanks for the recommendation, @Jonathan Edwards |
| 11 comments | |
|
|
Kartik Agaram
2019-06-02 00:17 #
The recent discussion of Bonnie Nardi's "A small matter of programming"[1] got me to take it off my bookshelf and reread it. Here are some notes from my reading, in case anybody's interested. Particularly @Jonathan Edwards who asked for a summary. http://akkartik.name/post/nardi [1] 1559061487.146900.html |
| 3 comments | |
|
|
Brendan Zabarauskas
2019-06-01 22:49 #
> Preferably one that doesn’t get into true FP with strong types and such, but focuses more on the rationale behind immutability/referential transperancy. Ahh ok, missed that bit. |
|
|
Brendan Zabarauskas
2019-06-01 22:47 #
The Joy of Haskell peeps recently published this book - can’t say how good it is, but I’ve so far been pretty impressed with Julie Moronuki’s approach to teaching: https://joyofhaskell.com/posts/2019-05-21-first-book.html |
|
|
William Taysom
2019-06-01 22:27 #
Yes, Clojure is the way to go if you care about immutability and not one iota about types. Else I recommend Haskell (certainly over an ML, sorry CMU), but I don't have Haskell text to recommend: I learned it from reading papers and source. |
|
|
Mariano Guerra
2019-06-01 10:37 #
The first chapter, Names, explains why names define the structure of our software, and how to judge whether a name is any good. |
|
|
Mariano Guerra
2019-06-01 10:36 #
clojure books are good for that, I read joy of clojure, but elements of clojure sounds really good from some quotes I've read |
|
|
Daniel Hines
2019-06-01 10:29 #
Preferably one that doesn’t get into true FP with strong types and such, but focuses more on the rationale behind immutability/referential transperancy. |
| 3 comments | |
|
|
Daniel Hines
2019-06-01 10:28 #
What’s a good gentle intro to FP? |
|
|
Andreas S.
2019-05-31 07:00 #
https://uxdesign.cc/introducing-mercury-os-f4de45a04289?gi=b50b1893c11f |
| 13 comments | |
|
|
Andreas S.
2019-05-31 07:00 #
If you squint a little this looks a bit like Xanadu :sweat_smile: |
|
|
Steve Krouse
2019-05-31 02:49 #
This essay does a solid job summarizing the classic skepticism against "improving programming". Found it via @Paul Biggar https://architectofworlds.com/blog/why-codeless-software-doomed-fail/ |
| 7 comments | |
|
|
Gregg Tavares
2019-05-31 02:36 #
So apparently Roblox is taking over the world. They claim to have 90 million active monthly users. No idea what it's dev system is like but apparently kids are making stuff with it. https://www.roblox.com/create |
| 1 comments | |
|
|
Mariano Guerra
2019-05-31 01:28 #
https://github.com/rokups/ImNodes |
|
|
Ivan Reese
2019-05-30 22:28 #
https://twitter.com/spiralganglion/status/1134318733571137537 I laid out some of my "really wish we had this" ideas for node-based visual programming language UI design in this Twitter thread. What VPL UI ideas do you really wish we had? |
| 12 comments | |
|
|
Edward de Jong
2019-05-30 21:52 #
open to voting: which is a better name for the record structure holding a 2d point with fields x, y, and a record structure holding a 3D point (x y z).? Since record names by convention in my language always begin with a_ to give clue as to the name kind, the two logical alternatives are: a_point, a_point3, or the two records could be called a_xy, a_xyz? which do you think is better? a_xy is shorter, but not that much faster than a word like point which happens to have the letters in adjacent fingers for the first 4 letters, which is very fast to type... |
| 2 comments | |
| # |
magicmouse94937
2019-05-30 21:50 #
cleared channel topic |
| # |
magicmouse94937
2019-05-30 21:49 #
set the channel topic: Which is better? a_point, a_point3 vs a_xy, a_xy |
|
|
Garth Goldwater
2019-05-30 18:33 #
the guy who did the interactive data structures visualization above also did a really interesting IDE using an Xbox controller for Java: https://youtu.be/tztmgCcZaM4 . I think this is a ridiculously cool way of looking at structured editing—folding/unfolding, lexical and textual- level editing at near-video-game speeds |
|
|
Charlie
2019-05-30 14:32 #
I know a lot of you guys are pro-visual programming. How do you reconcile the massive drop in human brain-to-computer bandwidth when moving from keyboard to mouse? Visual languages may be better at getting information from the computer to the brain but text is still orders of magnitude better at information flow from brain to computer. And it's not for a lack of trying; UX design is mostly a field about how to get ideas from human brains into computers using a mouse and/or phone touchscreen, and we're still miserably bad at it. What changes to make all the programmers stop using terminals and the accountants stop using Excel? |
| 28 comments | |
|
|
Srini Kadamati
2019-05-30 06:53 #
pretty neat project - https://www.youtube.com/watch?v=KwZmAgAuIkY - visualizing data structures interactively |
| 1 comments | |
|
|
Felix Kohlgrüber
2019-05-30 04:23 #
Using hashs as function references https://www.youtube.com/watch?time_continue=3&v=Kgw9fblSOx4 |
|
|
Rafael Luque
2019-05-30 01:50 #
Hi, I received my used copy of "Interactive Programming Environments" (https://www.amazon.com/Interactive-Programming-Environments-…) and I found it a good collection of papers from the 80s. I enjoyed the paper "Beyond Programming Languages" by Terry Winograd that it is available here: https://john.cs.olemiss.edu/~dwilkins/Seminar/S05/winogradPL.pdf The main thesis of the paper is the following: "The fundamental use of a programming system is not in creating sequences of instructions for accomplishing tasks, but in expressing and manipulating descriptions of computational processes and the objects on which they are carried out." |
| 2 comments | |
|
|
Mariano Guerra
2019-05-30 01:37 #
https://www.kickstarter.com/projects/joylabz/gamebender-the-… |
|
|
William Taysom
2019-05-29 04:22 #
Mighty disheartening that getting any two devices to talk to each other at all is an undertaking if not an ordeal let along having a seamless experience across several of varying form factors. :crying_cat_face: |
| 4 comments | |
|
|
Scott Anderson
2019-05-28 17:17 #
https://furbo.org/2019/05/28/the-future-of-interaction/ |
| 1 comments | |
|
|
Tudor Girba
2019-05-28 12:58 #
The MOOC is indeed a good resource. The other one is Pharo by Example: http://books.pharo.org/updated-pharo-by-example/pdf/2018-09-… |
|
|
Srini Kadamati
2019-05-28 12:50 #
@Garth Goldwater there’s a mooc! I’ve heard good things - http://mooc.pharo.org/ |
| 2 comments | |
|
|
Garth Goldwater
2019-05-28 12:46 #
what's the fastest way to get started with/best guide to pharo smalltalk? I'd like to pick up enough to get involved with moldable development. I've done ruby, js, haskell, lisp, some other esoteric languages |
|
|
Chris Granger
2019-05-28 09:39 #
I highly recommend that book for anyone interested in end-user systems |
| 1 comments | |
|
|
Brian Hempel
2019-05-28 09:38 #
Given that HyperCard is often cited as an positive example of a desired end-user programming experience, I found it interesting to discover that Bonnie Nardi was not so fond of it. In her discussions of end-user programming, Nardi believes that domain-specific programming systems succeed when they implement the domain-specific concepts that domain experts already know. To perform non-trivial tasks, HyperCard requires that users learn HyperTalk. But HyperTalk, rather than embodying domain-specific concepts, is instead essentially an ordinary general-purpose programming language but without the speed or flexibility. Bonnie A. Nardi, “A Small Matter of Programming” (1993) p53: > What about HyperCard? HyperCard with HyperTalk is a compromise between a general programming language and a task-specific language. HyperTalk doesn’t do everything that a general programming language does, but it does provide a friendlier syntax than, say, C++. Like spreadsheets, it is interactive. But there is very little in the way of serious commercial stackware. To create stackware or applications that are not simple prototypes, users are faced with learning HyperTalk, which is almost as complex as a conventional programming language and requires mastering basic computer science concepts. The problem may be that HyperCard-like environments are actually a bad compromise: they have the complexity of conventional programming languages but lack their speed and they are not close enough to end users’ needs to provide the right kind of task specificity, nor are they general enough to be as powerful as a conventional language. |
| 15 comments | |
|
|
Doug Moen
2019-05-28 04:46 #
Here's another research track: software permanence. Modern software bitrots quickly. You spend years creating a large program, maybe 50,000 lines. It becomes very popular for a niche audience. Then your goals change, you have very little time to maintain it, and all of your dependencies bit-rot. Your programming language bit-rots: features you depend on are deprecated and removed. Library dependencies bit-rot: no longer maintained, the old versions are insecure, aren't compatible with Wayland, won't compile with new compilers, and so on. New library versions are incompatible with your code, missing features you require that were dropped from the (e.g.) Wayland rewrite due to being too niche. If we are software revolutionaries, then how do we re-invent the software stack to support software that still runs and is still usable 100 years from now? It's a big topic. |
| 13 comments | |
|
|
Ivan Reese
2019-05-27 22:13 #
Does anyone have a sense of what's happening with Luna? Their blog, Discuss, and Twitter are all pretty much ghost towns. Are they all just heads-down iterating on the beta? Did they have to go back to focussing on flowbox.io to pay the bills? |
| 2 comments | |
|
|
Felix Kohlgrüber
2019-05-27 11:15 #
I feel like a lot of people in this group think that storing programs as text is probably not a good idea. Leaving editing UX aside, what counter-arguments can you come up with or have you heard from others? |
| 32 comments | |
|
|
Mariano Guerra
2019-05-27 06:31 #
this looks amazing, nice way to "reveal" complexity in 3 layers, only when needed https://www.youtube.com/watch?v=dYQKremTPGc |
| 13 comments | |
|
|
Duncan Cragg
2019-05-26 03:41 #
I'd like us to create something like a taxonomy of our different approaches here and elsewhere. For example: • Scratch-like • FRP-based • Dataflow, boxes and arrows • if this then that • spreadsheet-like • ... This should inspire discussion of their merits and costs, which doesn't seem to happen much here. And also we could do the same for our common goals with our projects: • end user liberation, empowerment • better IDE UX • discover the pure essence of what programming is • ... |
| 18 comments | |
|
|
Andreas S.
2019-05-26 03:33 #
This came in today via hackernews, Von Neumann on automata theory on logic (critique): https://www.yodaiken.com/2019/02/20/von-neumanns-critique-of… |
|
|
Dan Cook
2019-05-25 11:23 #
Here is a great article about how technology changes, and focusing on what's best for humanity (e.g. what will work?) rather than preserving the old or current way of doing things, and the role of experimenting with new things: http://www.shirky.com/weblog/2009/03/newspapers-and-thinking-the-unthinkable/ |
| 1 comments | |
|
|
Stefan Lesser
2019-05-25 04:00 #
A few people here have been posting about category theory. I’ve been learning category theory for the last few weeks trying a few different approaches and found resources that work well for me. If you’re interested here's my current “curriculum”: https://gist.github.com/stefanlesser/7f0749b3a38078b3eebe0cc408345e9f Is anybody here interested in forming a (virtual?) study group? I noticed how much more effective it is to talk to people about it. Would be great to find people who are actually interested in me explaining it to them. ;-) Obviously, I’d also be very interested in having others explain it to me as well. Pretty open about the structure. Could be sort of a book club working through the resources, weekly video calls to discuss and explain to each other, share exercise results, or even do “pair programming” on the exercises. Whatever you feel comfortable with and are interested in. However, you should be genuinely interested in putting some effort into it, which maybe means you can commit to read a few chapters a week and then meet online to discuss them. My goal is to build intuitive understanding for category theory concepts and its applications. I’m less interested in learning all the proofs and more in what it means that for instance natural transformations map to parametric polymorphism and what we can use these kinds of insights for to create better programming languages and environments. I’ve made it far enough to totally believe in but not yet far enough to know how to take advantage of the Eric Weinstein quote: >“Theoretical mathematicians are sitting on top of a giant stockpile of intellectual gold. They have so many things that have not been manifested anywhere. You have no idea how much great stuff that these priests have in their monastery.” which is on the Conexus website that @Daniel Hines linked to above. Reply here or DM me. |
| 57 comments | |
|
|
Doug Moen
2019-05-25 02:51 #
I think C++ has about 20 different ways to bind a language entity to a name? With more arriving in future language revisions. If you know in advance where this evolutionary process is leading, you can plan for it. You can avoid shadow domains, and try to provide universal abstraction mechanisms, which leads to a simpler and more powerful language. |
| 1 comments | |
|
|
Doug Moen
2019-05-25 02:36 #
Most programming languages seem to be created to satisfy some specific practical need, and aren't explicitly designed to satisfy the Principle of Abstraction. But programmers want to create abstractions, so over time, your language will evolve over time to support an increasingly greater ability to abstract over various kinds of AST nodes. This kind of language evolution can be messy and result in a lot of language complexity. Gilad Bracha wrote a blog post, "Shadow Domains", that gives a name to the kind of language complexity that arises. This is where the fundamental abstraction mechanisms (the ability to bind language entities to names, the ability to pass language entities as function arguments and return them as results) are re-invented multiple times within the same language, but within different domains. |
|
|
Doug Moen
2019-05-25 02:23 #
When I was a student, I read a number of classic texts on programming language design: They all say the same thing. To the greatest extent possible, you should be able to replace any node in an abstract syntax tree with a variable reference, or a function call, or a block (aka let-expression). Privately, I call this "the principle of abstraction". This leads to things like the Lisp macro system, and staged compilation, and partial evaluation, and dynamic typing. |
|
|
William Taysom
2019-05-24 23:11 #
Yes, it seems to me that JITs are where lots of partial evaluation work is done. Partial evaluation is so delightful, I'm often surprised people don't talk about it more. In contrast to how dynamic languages provide flexibility to the point of incoherence, serious staging can give you better defined intermediate steps to target and some certainty about what comes out at the end. |
|
|
Chris Granger
2019-05-24 21:01 #
It's certainly the case that a JIT is a form of partial evaluation |
|
|
Chris Granger
2019-05-24 21:00 #
it is an interesting parallel I hadn't fully considered |
|
|
Chris Granger
2019-05-24 21:00 #
I can't think of a language where you actually have access to the JIT, can you? |
|
|
Chris Granger
2019-05-24 21:00 #
I think staged compilation implies having access to the staging |
|
|
William Taysom
2019-05-24 20:59 #
@Chris Granger does a dynamic language with a JIT count as lazy staged compilation? :thinking_face: |
|
|
Doug Moen
2019-05-24 16:48 #
> until I quit my job and wrote a new compiler from scratch Hilarious ... I did the same thing. |
| 1 comments | |
|
|
Katerina solstad
2019-05-24 15:56 #
Iwhat people in the group think of this Svelte3 that came out for webdev? Will it out react away? |
| 1 comments | |
|
|
Ivan Reese
2019-05-24 12:53 #
Re: @seanbax > I think mind-bending is a non-goal. I think mind-bending is a fantastic consequence of many worthwhile goals. When I see something that initially strikes me as mind-bending, I take that as a good sign that I can learn a lot from it. And as a community focussed on exploring future possibilities, learning about work at the frontiers is a big part of what we do here. So feel free to lean away from that if it doesn't motivate you, just be aware that it's something championed and valued here. |
|
|
Chris Granger
2019-05-24 12:50 #
is another one |
|
|
Chris Granger
2019-05-24 12:50 #
https://ziglang.org/ |
|
|
Chris Granger
2019-05-24 12:46 #
Also see const fn's in rust |
|
|
seanbax
2019-05-24 12:46 #
that's good. definitely a smart part of the design. |
|
|
Ivan Reese
2019-05-24 12:44 #
Jai (Jonathan Blow's language) supports compile-time execution — https://github.com/BSVino/JaiPrimer/blob/master/JaiPrimer.md — Does that count? |
|
|
seanbax
2019-05-24 12:35 #
Why don't we see it in the C-family of languages |
|
|
Chris Granger
2019-05-24 12:35 #
Julia isn't a JIT |
|
|
Chris Granger
2019-05-24 12:35 #
Staged compilation is a fairly old idea, and while few of the languages that ended up being mainstream adopted it, it's decently well trod ground. |
|
|
seanbax
2019-05-24 12:35 #
the rules are different for JIT compiled languages. |
|
|
Chris Granger
2019-05-24 12:34 #
It's worth looking into Julia then. |
|
|
seanbax
2019-05-24 12:30 #
Also for staged compilation you mention scala and julia. People usually mean things like macros in this context.. or maybe for languages that have S-expressions some kind of AST transformation. I'm not a language theorist at all, but I haven't seen any compiled language that simply let you run the same language at compile time. |
| 3 comments | |
|
|
seanbax
2019-05-24 12:23 #
Are there FOC related meetups? I'm in nyc |
| 1 comments | |
|
|
seanbax
2019-05-24 12:21 #
Like, if you can't express your intent, the language has failed, full stop. And the last decade or so of C++ evolution has made this issue much worse. |
|
|
seanbax
2019-05-24 12:20 #
I'm motivatived by the idea that veteran C++ programmers routinely go on SO just to find out how to do something straight-forward, or even to argue if it's possible. |
|
|
seanbax
2019-05-24 12:18 #
I think mind-bending is a non-goal. |
|
|
Chris Granger
2019-05-24 12:17 #
If you want to go in a mind-bending direction you could also read about Black and then the later work done by Nada Amin on collapsing towers of interpreters |
| 2 comments | |
|
|
Chris Granger
2019-05-24 12:16 #
which will lead you into the Graal/Truffle world |
|
|
Chris Granger
2019-05-24 12:15 #
There are also close ties between staging and partial evaluation |
|
|
Chris Granger
2019-05-24 12:14 #
Julia is effectively a case study in taking staging to the extreme |
|
|
Chris Granger
2019-05-24 12:14 #
Check out Lightweight Modular Staging for Scala and take a look at Julia |
|
|
Chris Granger
2019-05-24 12:13 #
yeah, I'm a big fan |
|
|
seanbax
2019-05-24 12:13 #
Ahh ok. Well, it's super useful because it cuts the need out for much of the awful template metaprogramming that we've inflicted on ourselves. |
|
|
Chris Granger
2019-05-24 12:13 #
Yep! Staged compilation is really just about having multiple timeframes for evaluation |
|
|
seanbax
2019-05-24 12:12 #
tokenization, preprocessor, tokenization, translation. |
|
|
seanbax
2019-05-24 12:12 #
I'm not sure that it is. This is done with the normal C++ compilation model. |
|
|
Chris Granger
2019-05-24 12:11 #
That's known as staged compilation |
|
|
seanbax
2019-05-24 12:11 #
https://www.circle-lang.org/quickref.html Anyways here's a quickref of what I've done. There's a link to a much more detailed document as well as a feature preview binary. |
|
|
seanbax
2019-05-24 12:10 #
So you can execute any C++ statements during source translation, just like a scripting language. By performing compile-time control flow you set yourself up for same-language reflection. So if you make an object declaration inside a compile-time loop, it makes one declaration for each iteration, etc. The idea is to metaprogram C++ in C++. |
|
|
seanbax
2019-05-24 12:09 #
Typically the language debate is about syntax or semantics.. functional vs imperative, GC, typing etc etc. That is well-worn territory that didn't interest me. So instead I took an existing language, C++, with all of its strengths and weakness, and rotated it from the runtime to the compile-time axis. |
|
|
seanbax
2019-05-24 12:07 #
OK so.. People are talking about complacency with the status quo and all that. I been coding C++ for 22 years. My resentments at the language (and truly, all C-derived compiled languages) grew and grew until I quit my job and wrote a new compiler from scratch. |
| 2 comments | |
|
|
Kartik Agaram
2019-05-24 12:05 #
Those who can't do, hang out at FoC :stuck_out_tongue: |
|
|
seanbax
2019-05-24 12:01 #
heya, i just learned about the FOC website and slack. It seems intriguing, but.. what does it all mean? Is this a place to talk about the future of coding, in general? |
|
|
Daniel Hines
2019-05-24 07:37 #
https://conexus.ai/ventures |
| 4 comments | |
|
|
Rashad Gover
2019-05-23 19:41 #
Is anybody here in the L.A. area? I’m interested in starting a Future of Coding meetup in L.A. |
| 3 comments | |
|
|
William Taysom
2019-05-23 19:07 #
I liked it well. Thank you @Jonathan Edwards. Strange Loop nicely merges practitioners, academics, and artists. |
|
|
Jonathan Edwards
2019-05-23 12:22 #
I ran the Future Programming Workshop as a pre-conf at SL for 2 years. Was fun but not a perfect fit, and wasn’t invited back. The vibe at SL is highly accomplished hackers interested in advanced techniques. Dissatisfaction with the status quo is mostly expressed as a problem of structural inequity in society. |
| 6 comments | |
|
|
Doug Moen
2019-05-23 12:11 #
Anybody else want to attend [Strange Loop](https://thestrangeloop.com/) (September 12-14, St Louis MO)? @Ivan Reese and @Brian Hempel both recommended it as a good general conference that would appeal to Future Of Coding folk. If there is interest, we could have an informal meetup. We can also book a FOC "unsession", which gets us a conference room with audiovisual equipment for 30 minutes or an hour, which could be formatted as lightning talks. |
|
|
Daniel Hines
2019-05-23 08:02 #
For the many of us interested in Datalog, theres an international research conference being held in Philadelphia in a few weeks. Subjects will include Datalog, non-monotonic reasoning, and data provenance. I'll be there. Would love to rendezvous if anyone else attends. https://sites.sju.edu/plw/ |
|
|
Andreas S.
2019-05-23 07:10 #
https://m.signalvnoise.com/open-source-beyond-the-market/ |
|
|
Andreas S.
2019-05-23 07:10 #
This was quite a good talk on open source ( and yeas ruby and ruby on rails too) |
|
|
Daniel Hines
2019-05-22 18:42 #
Still waiting for his punchline. He’s got 25 minutes left to fix programming :wink: |
|
|
Daniel Hines
2019-05-22 18:41 #
He really hits on a core programming challenge: the impedance mismatch between hierarchical and relational data. Functional programming excels at working with hierarchical data through recursion, while logic programming is tailored toward relational. |
| 4 comments | |
|
|
Daniel Hines
2019-05-22 18:39 #
Speaking of Datalog, this is a great talk: https://skillsmatter.com/skillscasts/12820-keynote-zeno-and-the-tar-pit |
|
|
Peter Abrahamsen
2019-05-22 13:47 #
I appreciated this reflection on a decade of declarative (Datalog) programming, and the contours of future programming suggested by that experience. H/t Frank McSherry. https://arxiv.org/pdf/1905.00402.pdf |
|
|
Andreas S.
2019-05-22 01:26 #
someone beat me to it and formulated some positive thoughts about the future of technology ( and yes, of course this has implications for the future of programming too!) ==> https://rbs.io/2019/05/a-revolution-in-your-pocket/ |
| 20 comments | |
|
|
Steve Krouse
2019-05-21 03:18 #
https://twitter.com/modernserf/status/1130655543180386304?s=19 |
| 9 comments | |
|
|
Mariano Guerra
2019-05-20 09:22 #
https://www.facebook.com/permalink.php?story_fbid=2407256322… |
| 4 comments | |
| # |
Kartik Agaram
2019-05-19 21:09 #
Here’s Jonathan Blow’s take on everything turning into a distributed system: “It’s a disaster.” cc @Ian Bicking @Charlie Roberts |
| 16 comments | |
|
|
Will Crichton
2019-05-19 11:56 #
One thing I wonder: if you took the union of everyone’s vision for future of coding (in this community), what percentage of the current application space in programming would it cover? For me, my view of coding is heavily influenced by the applications I’ve personally worked on, which like many of you, is web UI + enterprise CRUD apps + compilers + games + functional programming. Subsequently a lot of the focus is on better databases, better UIs, better compiler toolchains, or more generally better “abstractions”, whatever that means. However I haven’t seen a strong presence in this community from e.g. hardware, cloud computing and data processing, data science, hard sciences (bio, physics, chem, …), supercomputing, simulation, security and privacy, blockchain/crypto, machine learning and AI, robotics, and so on. I partly mention those apps because in academia (at least Stanford), those are the problem spaces that academics are placing their bets on as the future of ~coding~ computer science. Of course, there’s a completely separate question of how much of the future is engineering vs. research, how much academia values engineering, etc. but I at least wanted to raise the initial question. |
| 8 comments | |
|
|
Deklan Webster
2019-05-19 09:26 #
@Steve Krouse Is the Comprehensible FRP talk online somewhere? |
| 19 comments | |
|
|
Adrian Sieber
2019-05-19 01:51 #
What's the biggest / best curated link collection on the future of coding at the moment? |
| 3 comments | |
|
|
Nick Smith
2019-05-18 20:35 #
The modern OS is an example of a horribly bad abstraction |
|
|
Nick Smith
2019-05-18 20:33 #
Jonathon is somewhat skeptical of abstraction, whereas I'm more optimistic. It's just that finding good abstractions is the hard part... |
|
|
Nick Smith
2019-05-18 20:32 #
This is a very good talk, and Jonathan really nails the key issues of software complexity. He doesn't really propose any solutions... his thesis is just "we need to make everything simpler, and make sure we teach/learn how it all works". |
|
|
Doug Moen
2019-05-18 19:40 #
Jonathan Blow's talk, "Preventing the Collapse of Civilization", is about the ever increasing complexity and unreliability of software: why this is not sustainable, and what we must do. https://www.youtube.com/watch?v=pW-SOdj4Kkk |
| 26 comments | |
|
|
Al Mo
2019-05-18 16:31 #
What's your opinion on GraalVM? I've been playing with it and I'm very satisfied. |
| 1 comments | |
|
|
Adrian Sieber
2019-05-18 15:42 #
Well, not yet and not always in a usable form. Good looking getting GHCJS to work. PureScript in comparison is production ready (and arguably even a better language than Haskell, because they've solved the record problem) |
|
|
Nick Smith
2019-05-18 15:40 #
yes but everything compiles to JavaScript and/or WebAssembly either way :slightly_smiling_face: |
|
|
Adrian Sieber
2019-05-18 15:40 #
I mean it's a lot cheaper if it really runs in your user's browser and not some server you have to provide |
|
|
Nick Smith
2019-05-18 15:38 #
Every language can run in the browser nowadays :shrug: the browser (or cloud) is the "final platform" |
|
|
Adrian Sieber
2019-05-18 15:37 #
Oh, and if yo're wondering: My Haskell-ish programming language for it is PureScript. Compiles to JavaScript and can therefore be run in the Browser and on the Server. Also a C target is in the works… |
|
|
Adrian Sieber
2019-05-18 15:36 #
Wow, I just read https://futureofcoding.org/about#vague-dream-programming-language-system and that's basically the description of a side project I've been working on over the last months :flushed: (Not that I'm saying I'm solving any of it yet, but that's definitely the direction I'm heading) Looking forward to sharing first results with you in a few weeks :grin: |
| 2 comments | |
|
|
Daniel Hines
2019-05-18 14:19 #
I’m undertaking creating a gamified chore list for my family. With zero experience in games, what’s a good way to get started with animating sprites and such? Ideally I want to write the “business rules” and user interface in my language of choice (ClojureScript), but I want something I can easily express art to draw and animate little sprites (like Adobe Photoshop). Suggestions? |
| 6 comments | |
|
|
Deklan Webster
2019-05-18 10:35 #
Is the Comprehensible FRP talk online somewhere? |
|
|
David Broderick
2019-05-18 09:30 #
I'd like to announce a new channel: #research-center. Until I moved away from SF last year, I was an organizing part of a monthly meetup to discuss the future of coding. At the time, I thought about creating a long weekend or week long get-away for the group + others (say 30 people). But in the end, I was afraid a week wouldn't be enough time to do enough development to flesh out ideas. And then it would wind up being a seven-day version of our the discussion meetings, where we would debate based on what we already have found, rather than what we are currently finding. That led me to another idea: what if it was a year? What if the location was far away from everything else -- a sort of Manhattan Project for the Future of Coding? 30 people, more or less, working on maybe 20-40 ideas. Researchers would have full ownership of their work. Milestones not deadlines. No specific targets. Vision not goals. Weekly reviews of progress and critical peer sessions (ala PARC). Baseball, not golf (to quote Alan Kay). |
| 5 comments | |
|
|
Chris Knott
2019-05-18 01:36 #
Is there any difference between "real OO" as described by Kay, and the "actor model"? |
| 6 comments | |
|
|
Deklan Webster
2019-05-16 10:18 #
what is blocks? |
| 5 comments | |
|
|
Andreas S.
2019-05-15 01:27 #
@Miles Sabin Hi Miles good to see you here :slightly_smiling_face: Regarding coordination languages and distributed systems have you been following what greg meredith is doing with Rholang and Rchain? |
| 6 comments | |
|
|
Dan Cook
2019-05-14 21:01 #
I just came across this video of Alan Kay delving deep into what "object oriented" really meant, and how it differs from other systems and languages that later claimed to be OO: https://youtu.be/QjJaFG63Hlo There's also this similar (shorter and less in-depth) one by Dan Ingalls: https://youtu.be/Ao9W93OxQ7U A few interesting points that I gathered: (I might have some of this a bit wrong, and maybe some of it is specific to SmallTalk. My point here is just to give a hint of what you might find in these videos, and what you might think about if you (e.g. @Joel Jakubovic?) want to experiment with an "actual" OO system) |
| 2 comments | |
|
|
Peter van Hardenberg
2019-05-14 16:44 #
Reading what @Drewverlee and @Ian Bicking above wrote leaves me thinking that what I love most about writing software in Elm (and to a lesser extent React) or SQL is what I don't have to think about. Particularly these last couple of years writing decentralized systems writes can come at me from anywhere at any time -- if I had to translate those back into specific "display updates" the reconciliation would be abominable. Vice versa, by channeling writes through a single point I get tremendous leverage to be able to interpose whatever storage engine I want. The flip side of all this, of course, is that it doesn't scale. By that I mean that the abstraction breaks down inevitably when speed becomes a first-order concern. That happens in SQL databases when you get a few gigabytes more data than your system has RAM (if not before) or in Elm / React when you are trying to respond on the next frame for things like text entry. |
| 13 comments | |
|
|
Drewverlee
2019-05-14 13:15 #
Does anyone have any thoughts on reactive datalog (https://www.youtube.com/watch?v=ZgqFlowyfTA)? To me, it would seem, with reactive datalog, a lot of translation code between nodes that are separate in size and distance (db, server, browser) become un-necessary. This would imply a multiplicative reduction in codebase size and proportionately reduced complexity. I would across the software community were seeing an effort to push reactiveness into a component of the database, which of course, just shifts the effort, but does so in a manor that makes the tools (databases) easier to understand, rather then trying to bootsrape the functionality into your system later. Examples such as rethinkdb (rip), kafka streaming, spark, flink all do this at scale, but are unwiedly for small teams. More accessible reactive databases like firebase have a limited query language and no universal way to update your client (browser) db. So with that in mind, im very interested in: • thoughts on reactive databases in general • thoughts on how to sync browser state with the database • examples of existing works and papers • mathematical models surrounding these concepts (algorithms, proofs etc...) • tradeoffs, maybe a reactive database requires vastly more memory and space? |
|
|
Ian Bicking
2019-05-14 11:58 #
Just a random thought: I was looking at Bret Victor’s old Learnable Programming, and it had a little note about how programming consists of decomposing problems, and I realized: that’s not what I do these days. I spend all my time thinking about messaging and communication between systems, and “decomposition” feels like a luxury. I don’t know if that’s a general change in programming, or just the nature of my work or professional stage… but it feels like a real change to me. That is, I spend a lot of time thinking about these things: 1. What are the entities in my system? These could be as simple as objects, but might be remote services, or different processes, browser tabs, etc. 2. Who knows what? 3. Who needs to keep track of what? 4. From any given context, how do I get access to the other entities? 5. How do I communicate with them? The push/pull of functions or RPC? Pub/sub? Some wonky event system? 6. Where does a particular change originate, and which entities are simply reactive? This all is where a lot of modern language development leaves me cold. Types don’t offer much here. Going further, I think there really is a kind of modernist/postmodernist break here (ala http://homepages.mcs.vuw.ac.nz/~kjx/papers/nopp.pdf): modern approaches attempt to create self-consistent and robust systems, and postmodernist approaches accept that we operate in a diverse systems where a lot of important things happen at the intersection of incompatible modernist systems. I don’t have any conclusion in mind, but I’d be interested in people’s thoughts. |
| 35 comments | |
|
|
Tom Lieber
2019-05-14 10:25 #
Did anyone get this error when trying to join this Slack? "Error Verifying Invite: Sorry, there was an unexpected error. Please try again." I have a friend who's having trouble joining from his phone. |
| 4 comments | |
|
|
Steve Krouse
2019-05-14 07:43 #
I was very excited to find a curriculum for reimagining the personal computer this morning! Weeks 3 & 4 seem particularly relevant for this community but I'm excited to check out rest of it when I have time http://chrisnovello.com/teaching/risd/computer-utopias/ |
| 6 comments | |
|
|
Garth Goldwater
2019-05-11 15:40 #
hey @Steve Krouse @Tudor Girba during the FoC podcast on moldable development you mention a video demo of the glamorous toolkit—did that get saved and uploaded anywhere? would love to watch it as a lot of the YouTube videos I've found don't have great resolution on the actual environment / code |
| 3 comments | |
|
|
Kartik Agaram
2019-05-11 10:24 #
A critique of CRDTs https://github.com/xi-editor/xi-editor/issues/1187#issuecomment-491473599 |
| 1 comments | |
|
|
Mariano Guerra
2019-05-10 07:33 #
What makes Pony different? |
|
|
Mariano Guerra
2019-05-10 07:32 #
or pony https://www.ponylang.io/ |
|
|
David Piepgrass
2019-05-10 07:27 #
Oh, you guys might want to look at MPL. The concurrent part of MPL is like session types, probably isomorphic, but it seemed more intuitive to me than session types. Not that it was easy to learn about - MPL is an idea from my professor who has poor communication skills... it took me four months to figure out what he was talking about, but once I figured it out I wrote this document: http://loyc.net/2015/mpl.html |
|
|
Mariano Guerra
2019-05-10 02:02 #
both share the actor model as foundation, the ideas of virtual actors in orleans are really interesting |
|
|
Mariano Guerra
2019-05-10 02:02 #
also Orleans for .net https://dotnet.github.io/orleans/ |
|
|
Mariano Guerra
2019-05-10 02:01 #
Erlang/OTP can be tought of a coordination language on top of "sequential erlang", there's even an alternative being developed called partisan https://codesync.global/media/partisan-testable-high-perform… |
|
|
Miles Sabin
2019-05-10 01:55 #
You might want to dig in to "session types". |
|
|
Miles Sabin
2019-05-10 01:54 #
In the research community at least, a lot of that stuff disappeared in favour of work on mobile calculii of various sorts, pi/ambient calculus, petri nets that sort of thing. |
| 3 comments | |
|
|
Miles Sabin
2019-05-10 01:53 #
http://lucacardelli.name/Papers/Obliq.A4.pdf. |
|
|
Miles Sabin
2019-05-10 01:52 #
I remember eg. https://en.wikipedia.org/wiki/Obliq. |
|
|
Miles Sabin
2019-05-10 01:51 #
Right, "coordination languages" were a thing IIRC in the late 90's early 00's? |
|
|
Stefan Lesser
2019-05-10 01:45 #
Found it: Coordination Languages and their Significance http://worrydream.com/refs/Gelernter%20-%20Coordination%20La… |
| 1 comments | |
|
|
Stefan Lesser
2019-05-10 01:37 #
I’ve now successfully nerd-snipes myself and try to figure out which paper I’m remembering, and I believe it was related to LINDA http://worrydream.com/refs/Carriero%20-%20Linda%20in%20Context.pdf, but this article is not the paper I meant and it’s not in the references either… :thinking_face: |
|
|
Stefan Lesser
2019-05-10 01:37 #
@Miles Sabin That’s an interesting connection I hadn’t made (and definitely didn’t mean). Although I’d say it the other way round: the mathematical / category theory principles Haskell’s IO Monad builds on, could probably also be used as effectively to separate computation from coordination in distributed systems programming. |
|
|
Miles Sabin
2019-05-10 01:30 #
That roughly is the Haskell/monadic IO/effect model. The core language is effect-free and effects are reified as values of an algebraic data type (which is typically a monad) which is then interpreted "at the end of the world". The ADT typically has enough structure that it can be considered as an embedded language for describing effects. |
|
|
Stefan Lesser
2019-05-10 01:25 #
This reminds me of a paper I read a while ago, which I unfortunately don’t remember the title of, but which was arguing for — if I remember correctly — a separation into a language for computation and a language for coordination. The computation language is optimized for expressing algorithms in an easy to comprehend way making assumptions like local data, single thread, etc. That could basically be almost every generic PL, doesn’t even matter if imperative, functional, or whatever. The coordination language then takes care of distributing data and/or computation on different machines, which can also apply to a single physical machine due to virtualization, threading, or preparation for computation on different cores on C or G or TPUs. |
|
|
Charlie
2019-05-09 17:19 #
Yea, I have to agree with you that it's an infrastructure problem first. I do think that the trajectory of software and hardware is trending away from "everything happens on one machine". There are still plenty of instances of problems that can be solved on a single machine, but steeped in cloud ideology as I am, I think multi-machine computing is here to stay. Infrastructure may deliver us from the problems of distributed computing, but today most "back-end web"* developers are dealing with arrays that have been split into chunks, and will be for the foreseeable future. |
| 6 comments | |
|
|
Nick Smith
2019-05-09 17:11 #
You’ve premised your argument on there being a need to manipulate an array that is located (at a user-visible level) over two different physical locations. If you want to argue for the relevance of your conclusion you need to first argue for the relevance of your premise. Why does the user need to be concerned with a data structure that has been split into chunks? Could this concern be relegated to infrastructure? If so, then we don’t have a language problem. The user can simply deal with the array as if it is a single contiguous entity. |
| 5 comments | |
|
|
Charlie
2019-05-09 17:03 #
@Nick Smith Lets say you've got a program that is manipulating data in an array. If that array exists on your computer in memory, your language can express iterating over that array as a trivial concept (for loops, streams, sequences, take your pick). What constructs do you have to use if part of that array is in another machine, or in a database, etc? The language and its view of the world completely breaks down. You now have to spend X LOC writing clunky code that's abstractions over some OS syscalls to get that array close to hand so that the language can resume (and you can't resume unless you can bring the array close to hand!). As humans we can express "part of this array is over there", but the languages we use have no concept of "over there", there is only here. It's not a problem about abstracting over the oddities of networks, though that does play a part, its a problem of expressing over there in a computer language. This is all a rant to say that I think distributed systems are entirely a language problem :stuck_out_tongue: |
| 4 comments | |
|
|
Duncan Cragg
2019-05-09 16:41 #
I choose to work on that. :wink: |
|
|
Nick Smith
2019-05-09 16:31 #
Managing networks of communicating devices (i.e. "distributed systems") is important, but isn't always a language problem (often it's an infrastructure problem). When it is a language problem, it makes sense to investigate languages (or language features) that make networks easy. That's a separate (and established) line of investigation, and some people might choose to work on that. |
|
|
Nick Smith
2019-05-09 16:26 #
Charlie mentions that the pace of language innovation has slowed significantly since the 90s. Consider the possibility that this is a side-effect of the popular mindsets that everyone has adopted, rather than the result of us already having found the "ultimate paradigm" of expression. |
|
|
Nick Smith
2019-05-09 16:22 #
It seems like people have constructed some strawmen to attack in response to my post about John Backus. Nobody was suggesting that we should all be using Haskell. The point was to spur thought about our bias towards thinking about programming, particularly in terms of what our forebears and peers have told us is the "standard" or "efficient" or "practical" or even the "only" way of doing things (and whether this bias is something worth escaping). Ironically, this has conjured up discussion about the popular (and false) imperative/FP dichotomy, and the strengths and weaknesses of the two regimes, which is exactly the kind of mindset-of-our-forebears problem that the discussion was supposed to be about. |
|
|
Charlie
2019-05-09 13:34 #
Crazy guy here to say that everyone is looking in the wrong direction. Functional, Imperative, Excel spreadsheet-driven, who cares? Computation is not the frontier anymore. Most software is now built across networks and collections of computers (UIs/embedded being the large exceptions). What do we have to gain by min-maxing programming a single machine? The glacial pace of innovation in this space since ~1990 should be a big wake up sign. The future is wrangling distributed systems, which is something that single-machine Turing complete languages like to pretend is somebody else's problem. |
| 30 comments | |
|
|
Jason Priestley
2019-05-09 11:54 #
I think the mindset of "functional is better than imperative" has led to great confusion. If you are approaching this from the point of view of mathematical tractability (which I agree with) then they are simply different mathematical structures. It's like saying "rings are better than groups". There are areas where the sequential, mutational aspects of imperative code are inessential, and using imperative code is inelegant there ... like using too rich a mathematical structure for a proof, rationals where you just need any monoid. The best place for functional code is "pure computation" without "side effects" like concurrency, I/O etc. But even this terminology gives a weird value judgment, "pure" vs "impure". And then you have this quest to "purify" the impure by simulating I/O with monads - this doesn't simplify the proofs at all, the putative goal of the exercise. Conal Elliott did a great job parodying this mindset with "The C language is purely functional". |
| 10 comments | |
|
|
David Piepgrass
2019-05-09 08:05 #
I'm inclined to dump the mindset, but not the ability of languages to act in an imperative/mutable way - an impure language seems necessary to express some useful and fast algorithms, but the default mode of thought should be more functional rather than imperative, message passing + immutable data sharing rather than shared mutable memory. (But I think currying - saying (+) 1 instead of x => x + 1 - tends to be confusing and isn't worth the keystrokes it saves. And fundamentally it doesn't match how modern computers work. Arguably Haskell's always-lazy-eval has similar, if lesser, problems.) |
| 5 comments | |
|
|
William Taysom
2019-05-09 00:52 #
Functional data-flow with a Hindley-Milner type system of course! :wink: Guys, guys? Hey guys, where did you all go? |
|
|
Duncan Cragg
2019-05-09 00:42 #
well what's the practical alternative mindset? do we have consensus? |
| # |
Nick Smith
2019-05-08 23:38 #
John Backus laments in 1978 that Von Neumann (i.e. imperative) languages “have dominated our thinking for 20 years”. It’s now been over 50 years. Virtually all new programmers are still taught this mindset. Will we reach 100 years? (From the edited book “History of Programming Languages”, 1981) (paper also online) |
|
|
Andreas S.
2019-05-08 01:54 #
I check every few years how things have changed. ITs interesting to see |
|
|
Duncan Cragg
2019-05-08 01:52 #
Just remembered from long ago. Didn't know he'd left as I don't follow nutty projects :wink: |
|
|
Andreas S.
2019-05-08 01:51 #
@Duncan Cragg hi duncan! How did you know that curits is "the leader"? I read that he has left the project: https://urbit.org/posts/essays/a-founders-farewell/ |
|
|
Andreas S.
2019-05-08 01:48 #
@magicmouse94937 I want to expand a little bit more on the issue of "twitter and facebook" being successful. I think people use technology as a means of self expression. And people have done this using these platforms for some time. But obviously issues arise or changes comes to play, since "the medium is the massage" and people are becoming more and more dissatisfied with the current state of these. Twitter for example has changed a lot in the last 10 years. These days it feels like that are more bots and less humane interactions on twitter possible than before. Reasons for that are complex but exaclty because of that I do not believe that a single/centralized company can resolve these issues, that is impossible. Again I think these "social networks" will gravitate towards open dialog protocols. |
|
|
Andreas S.
2019-05-08 01:38 #
@Dan Cook Thank you Dan for sharing this! I hadn't heard of François-René Rideau before, but his description and comparison of urbit is really one of the best I have found so far yet. Still it seems a bit too narrowly technical focused. I did very much like when the author used terms like micro and macro level, because it shows that we need better terminology to discuss about computing. I think urbit tries to create a programming culture on its own. Yes it seems inaccessible but only so for people familiar with a programming context previously. I don't think that urbit has all the answers. But i DO think its asks interesting questions! Now articulating these questions and even arguing them is a whole different issue. I argue, we have come to the boundaries of usefullness of human natural lanugage to do. I'm uncertain how the future will unfold or if we ever will "fix" programming or technology will simply outpace us and brain computer interfaces make a lot of the things we do with computers today make look like incomprehensible child's play. |
|
|
Andreas S.
2019-05-08 01:12 #
@Dustin Getz: re "I think the point of Urbit is that from the Martian’s perspective, it is us javascript plebs who are the nutty ones" not quite so, I think one of the challenges of discovering what computation is about , remember alan kay says the computer revolution hasn't happend yet, is to explore the relationship between the individual and the group. Terms like "persistence" or "identity" try to negotiate between those. As humans we can not extract ourselves from neither our human history nor our biological history. So we are complex and mostly contradictory beings and we suffer through life. But we create technology and technology gives us mechanisms to reflect about ourselves and simultaneously changes our behavior. Its both a conscious and unconscious process. So this is Urbit an attempt to collapse layers of technical and maybe historical complexity into something more useful. |
|
|
Edward de Jong
2019-05-07 22:18 #
To me, Urbit is DOA. The reason facebook and twitter are so successful is that they stay up, and gradually improve their mostly free to use product. They use a pay-by-advertising model that is the accepted standard for all public media in the USA (Radio, Newspapers, TV, etc.). Their billions in revenue allows them the luxury of huge staffs which attend to all aspects of maintaining and growing their lead in their respective spaces. Urbit has no motor to drive it forward. And things don't move without a motor. |
| 16 comments | |
|
|
Edward de Jong
2019-05-07 21:47 #
Javascript is actually an uncredited copy of ActionScript 2. it is so close a copy weird quirks in the date system, like months being 0-based while days are not, was copied. Because of the litigation by Oracle over the Java API for obvious reasons the web companies do not credit MacroMedia (which was purchase by Adobe) that created Actionscript 2. The tragedy is that in AS3 they added strong typing, and it was a far better language after that addition, including a nice module system. Too bad ES 2016 modules didn't quite fully implement the AS3 module system. Forget the myths about it was developed it 2 weeks; it was a clone of a long-gestating, very popular scripting language that was the source of the original CDROM revolution of "multimedia" content (Macromedia Director with the Lingo language being the first popular multimedia authoring tool). Gradually JS has added in many of AS3's feature sets although the omission of strong typing is sorely missed. I have a small editing script that with a few dozen regular expressions can convert AS3 to JS at a 99% level. Steve Jobs and MS ganged up at one point to attack Adobe, trying to destroy their font business, and Adobe counterattacked with a suite of products that today is one of the best (and most expensive). |
| 13 comments | |
|
|
Charlie
2019-05-07 21:02 #
Scheme with extra steps |
|
|
Charlie
2019-05-07 21:01 #
Hey I can't let you guys hate on JS without reminding you that it's actually Scheme https://github.com/stratworld/strat/blob/master/stratc/ast.js#L66 |
|
|
Ivan Reese
2019-05-07 16:55 #
A javascript day job kicks ass — because when you have a javascript day job, it's easy to convince the rest of your team, "Hey, I should make us something better than javascript. We're already writing our own tools, frameworks, build systems, runtimes... so why not a language/environment too?" If we were all happily using.. oh... Clojure or some such... there's no chance I'd get to work on FOP-likes. |
|
|
Duncan Cragg
2019-05-07 16:12 #
I'm not saying my Javascript day job isn't absolutely fucking nuts. :smile: |
|
|
Dustin Getz
2019-05-07 16:10 #
I think the point of Urbit is that from the Martian’s perspective, it is us javascript plebs who are the nutty ones |
|
|
Duncan Cragg
2019-05-07 11:02 #
Yes, I conflated the nutty implementation of a good idea with the people doing it, some of whom may not be nuts :grin: |
|
|
Chris Granger
2019-05-07 10:59 #
FWIW, I had a brief interaction with Galen (the first guy in that video) and I really liked him. He was smart, down to earth, and totally reasonable. I found that difficult to reconcile with Urbit itself, but I wouldn't completely write off all the people. |
|
|
Duncan Cragg
2019-05-07 06:24 #
I think it was this: https://www.youtube.com/watch?v=g1qroWiZF90, but I'd have to scan it again to be sure |
|
|
Duncan Cragg
2019-05-07 06:22 #
yeah I once watched the intro video talking about their goals, and I could've used the video for my own work! I'll see if I can dig it out |
|
|
Dan Cook
2019-05-06 18:49 #
Here's a thorough analysis of Urbit (from a Houyhnhnm perspective): http://ngnghm.github.io/blog/2016/06/11/chapter-10-houyhnhnms-vs-martians/ TLDR; Its underlying implementation supposedly breaks holes in some of its overall principles / guarantees. And to the extent where it actually does uphold what it claims to, it's in some technical sense that's not ultimately meaningful or useful. (If that's all true, it's a real shame; because I'm otherwise all about what it's trying to do / be) |
|
|
Corey Montella
2019-05-06 16:50 #
fwiw Yarvin apparently has stepped away from Urbit. |
|
|
Corey Montella
2019-05-06 16:49 #
Ugh. That about sums up my opinion of Urbit. |
|
|
Duncan Cragg
2019-05-06 13:55 #
also the leader has .. interesting political views https://en.wikipedia.org/wiki/Curtis_Yarvin |
| 2 comments | |
|
|
Duncan Cragg
2019-05-06 13:51 #
bunch of nutters |
|
|
Andreas S.
2019-05-06 13:22 #
what do you think about urbit.org ? |
|
|
Andreas S.
2019-05-06 13:21 #
Good evening |
|
|
Shalabh
2019-05-06 12:56 #
https://alarmingdevelopment.org/?p=1263 from @Jonathan Edwards |
| 19 comments | |
|
|
Wouter van Oortmerssen
2019-05-04 13:05 #
no :slightly_smiling_face: |
|
|
Jonathan Conway
2019-05-04 05:27 #
I imagine this kind of thing has already been tried thousands of times though. |
|
|
Jonathan Conway
2019-05-04 05:27 #
Are there principles, such that, if they were followed, they would yield software that is guaranteed to be easy to understand and maintain, at least to some minimal degree or level? What if each module was limited to a small number of inter-related conceptual elements, and written in care carefully English (or whatever human language it uses) in such a way that someone could get to understand and grasp it within a few minutes? |
| 17 comments | |
|
|
Niko Autio
2019-05-02 11:53 #
Can somebody remind me why software must be maintained forever and it's never ready? Why users cannot compose different existing solutions and instead every application must solve every distantly related problem (poorly)? |
| 13 comments | |
|
|
Carlo Kok
2019-05-02 11:22 #
Have there been any discussions on newer memory models like rusts borrowing opposed to RC/GC? |
| 35 comments | |
|
|
Dan Cook
2019-05-02 08:50 #
Funny how we are collectively interested in fixing programming, and here we find that even the language about programming is confusingly overloaded and inconsistent |
|
|
Dan Cook
2019-05-02 08:49 #
Technically, any code is full of abstraction: any name is a stand-in for something more complex elsewhere. But at that (e.g. symbolic abstraction) level the whole program is an abstraction. So it's hard to have any meaningful discussion about abstraction, unless you cut that level out as a given and assume that we're taking about the model (of data and/or behavior). But like Kartik says, it's difficult to have meaningful discussion at all about something that people use in so many different ways. It's the same thing with TDD, architecture, abstraction, etc. I suppose we cannot disagree about clarification needed per context! |
|
|
Kartik Agaram
2019-05-02 07:16 #
I've also heard people use 'abstraction' when they mean 'division of labor'. Like a library or compiler or other interface. Compatibility as 'preserving an abstraction for our customers'. Ugh. Discussions like this are why I avoid the term altogether. |
|
|
Benoît Fleury
2019-05-02 05:09 #
@Dan Cook There are many possible usage of the term abstraction that it is probably best to specify what one means before making a point. I accept all the following definitions for example: 1. Abstraction as naming (what you call indirection). This is a tool to manage complexity. This is how Sussman and Abelson uses the term in SICP. This is an abstraction because it hides the implementation details. 2. Abstraction as "abstract" (or not realized). This is the definition used for ADTs and abstract classes for example. 3. Abstraction as uniform interface. Some people are uncomfortable using abstraction for everything in (1) and (2) and prefer to reserve usage of the term for "good abstractions". Abstractions obtained by applying the process of abstraction and that are generic enough to be useful in multiple places. 4. Abstraction as model. This is your definition I believe. It is about removing the details of reality you don't care about. |
| 1 comments | |
|
|
William Taysom
2019-05-02 01:17 #
@Dan Cook good points on abstraction vs indirection/composition vs abstract. |
|
|
Dan Cook
2019-05-02 00:05 #
I've heard devs say "I abstracted it out" instead of "(re)factored it out", again confusing indirection or stratification with abstraction |
|
|
Dan Cook
2019-05-02 00:03 #
@Nick Smith - Great point about abstraction! Unfortunately, many devs unknowingly confuse "abstraction" with other things. So here's a bit on that to help Nick's point get across more clearly: Programmers often call it "abstraction" when a placeholder is used to refer to something specified or defined elsewhere. But that's not abstraction, it's indirection. And if the idea is for various different entities (or different implementations) to fill that placeholder, then that's composition. Abstraction means throwing out unimportant / irrelevant details -- not hiding or separating them, but excluding them altogether. This is especially confusing in class-based languages wherein classes and methods are labeled "abstract" when they lack a (default) implementation. For example, consider an "abstract class" C with members X Y Z. What makes it abstract is not that X Y Z are implemented elsewhere, but that sub-class S may also define A B C. So the code can say "give me a C" (something with X Y Z), but you can give it an S (i.e something with A B C X Y Z) without it knowing that A B C even exist. Class C is only marked as "abstract" because it is only an abstraction for other things (rather than a concrete thing itself) "Abstract" methods are even more misleading, because they imply that abstract means "implemented elsewhere". However, "abstract" here does not mean that the method itself is abstract, but that it is only (a concrete) part of the definition of the enclosing "abstract class" (e.g. "some object with an X Y Z location in 3D space"). Abstraction is when you draw a circle and say "this is my car", when in reality a car has many moving parts & behaviors. In a program, it's representing your car as a few numbers (as part of a class or otherwise) because your program is only concerned with the car's position and speed. |
|
|
nicolas decoster
2019-05-01 23:49 #
Very interesting subject and the article seems very complete! Now, I must find the time to read it entirely (it is quiet long). On the same subject, I found this interesting article on Causal Tree and CRDT. I have played a little bit with Causal Tree (for a talk that illustrates Rust-WebAssembly-JavaScript bindings) and found it very very interesting. It is simple and efficient. http://archagon.net/blog/2018/03/24/data-laced-with-history/ |
|
|
Peter van Hardenberg
2019-05-01 21:18 #
We've published another research report that might be of interest to this audience. It's an exploration of what "local-first" software might look like, why it's important, and some of our explorations therein. https://www.inkandswitch.com/local-first.html |
| 38 comments | |
|
|
William Taysom
2019-05-01 07:25 #
@nicolas decoster UNIX "simplicity" really continues this idea of systems that are freely composable in principle, but not so much in practice. And I say this as one who maintains a fondness for Sam http://sam.cat-v.org/. |
|
|
nicolas decoster
2019-05-01 01:43 #
And on this "simple doesn't imply understandable" topic, here is a quote from Ritchie: "UNIX is very simple, it just needs a genius to understand its simplicity." (taken from the article linked by @Shalabh in #linking-together) |
|
|
Nick Smith
2019-05-01 01:35 #
And as a final note, it’s worth mentioning that although simplicity is correlated with comprehensibility, simple abstractions are not necessarily easy to understand. A dire case of this is “monads” in Haskell, which are conceptually simple but yet are confusing at first because we cannot analogise them with everyday ideas. Many simple abstractions are easy to understand however, such as a “List” abstraction or a “sum” abstraction (to sum a list). |
|
|
Nick Smith
2019-04-30 23:08 #
And in programs that mutate the world (files, networking etc), you need to consider the world as a mutable parameter. |
|
|
Nick Smith
2019-04-30 23:07 #
So in summary, I'd measure the complexity of a program as the product of the complexities of the top-level behaviours exposed by the program. The complexity of an individual behaviour is similar to the aforementioned "parameter space" concept, but the parameters themselves are abstractions (objects / data types). For OOP programs, the complexities of behaviours are usually high because the complexities of the abstractions they accept (mutable objects) are high. For functional programs the complexities of behaviours are usually low because the complexities of the abstractions they accept (immutable data) are low. |
|
|
Nick Smith
2019-04-30 20:01 #
Data types are also units of abstraction. Unfortunately though, "objects" in imperative OOP languages often do not form "simple" abstractions. How do you measure the complexity of an abstraction? Well, the important details of a "simple" abstraction can be described in a few sentences at most. Concise descriptions correlate with ease of comprehension. In the case of OOP languages, objects that hold mutable references to each other cannot be described so concisely, because to describe such an object necessitates a full description of the network of references that it has access to. This is because you can't describe what data an object stores or retrieves without describing the data of other objects it has access to, and you can't describe how the object behaves without specifying the behaviours of other objects that it might trigger or be triggered by. |
|
|
Nick Smith
2019-04-30 19:59 #
Abstraction is the key word that I haven't heard in this discussion about complexity. An abstraction is a filter for irrelevant details. In fact, I'll make the claim that abstraction is far more important than the nebulous concept of composability. After all, stateful imperative code is highly composable: you can put two sequences of instructions together to get another sequence. Composing sequences of instructions does not yield an abstraction however, so the number of details keeps increasing indefinitely. Hence large blocks of imperative code are complex. Functions are a common unit of abstraction, and a well-designed (or "simple") function will let you forget about the details of its workings. A poorly designed (or "complex") function will not. |
|
|
Nick Smith
2019-04-30 19:56 #
What's more, functions with large parameter spaces are not necessarily hard to understand. It depends on how well those functions form an abstraction. |
|
|
Nick Smith
2019-04-30 19:54 #
> code complexity experiences exponential blowup This isn't strictly true. First of all the measure you're implying is better described as the "parameter space". The size of the parameter space of a program is equal to the product of the size of the parameters (where the size of a parameter is defined as the size (cardinality) of its data type). Programs which are pipelines (think DSPs) do not experience exponential blow-up. |
|
|
Will Crichton
2019-04-30 19:15 #
Anyone who thinks the future of coding involves advances in cognitive science. (at least @Jonathan Edwards, but I’m sure there are others here.) I’m curious to hear your perspective on what aspect of programming you think cognitive science research has the most promise to shape, and why you think that hasn’t happened already. |
| 1 comments | |
|
|
Jason Priestley
2019-04-30 16:34 #
The topic of the interplay between the "expected" and "emergent" behavior of the system, reminds me a lot of Dijkstra's famous GOTO essay. The point he made in that essay was that GOTO was harmful because it prevented you from making inferences about the dynamic behavior of the program from its static syntax, whereas structured programming allowed you to relate the dynamic state of the system to a "coordinate system" derived from the control structures. I think that appeals to human intuition are often misplaced when it comes to this aspect of code specifically, because code complexity experiences exponential blowup. No matter how well you represent a boolean expression in terms of naming, code formatting, or organization, for instance, there is the fundamental fact that boolean satisfiability is NP-complete; at some point your brain will be unable to scale that cliff. This remark doesn't apply to code that isn't of an NP-complete flavor, like say a flat list of drawing instructions. I think "composability" is what is important for code, but "composability" is a somewhat vague word. More precisely, there should be a way to determine specific properties of the system by systematic logical deduction from the components of the system, and without simulating the whole dynamic trace of the system's execution. Composability can only be defined relative to the properties you are interested in: SQL is "composable" if you want to know if an element is in the relation defined by the SQL statement, but is not so "composable" if you want to know how long the statement will take to run. |
| 7 comments | |
|
|
Duncan Cragg
2019-04-30 14:42 #
There: I quoted him! |
|
|
Duncan Cragg
2019-04-30 14:42 #
Alan Kay: you can't scale and be centrally controlled |
| 2 comments | |
|
|
Chris Granger
2019-04-30 14:36 #
Yeah, at the end of the day this is about specification and what level you allow behavior to emerge. Tax systems are a fascinating thing to look at to study this. Most people think taxes are ridiculously over-complicated (and they are), but try designing a system that is reasonable at all levels of "execution"... the possible space of behaviors is functionally infinite, by bounding it you are necessarily going to end up being overly reductionist (so simple as to no longer be sensible) or so complex that it's hard to understand what the system does anymore. |
|
|
Duncan Cragg
2019-04-30 14:34 #
You can get the benefits of emergent behavior and mitigate errant behaviour if you have good visibility of the overall system and if what you see is intuitive in human terms (thus visualisation and HCI/UX) .. going back to the cell model: simple rules of cells at the micro level can create complex macro-level behaviour, but it's not scary if it results in fun, playing the game of life, or growing a plant.. Again, visibility of state is the most important thing. |
| 13 comments | |
|
|
Will Crichton
2019-04-30 14:32 #
Good point. I would think of that as “underspecification” (not sure if there’s another term of art). Agreed that it’s a large source of errors, particularly in big systems where putting together many underspecified parts results in crazy regions of undefined behavior. I still think it’s a little different than a composable system where the semantics are fully/unambiguously specified, e.g. a programming language with formal operational semantics, but where it can be hard to predict a class of programs someone might be able to write. But both are dangerous in their own right. |
|
|
Chris Granger
2019-04-30 14:29 #
These systems did exactly what you expected them to when they were used the way you thought they would be, but behaved radically differently when they weren't. |
|
|
Chris Granger
2019-04-30 14:28 #
A neat example of that. At the beginning of Light Table, one of the original hackers from the 90's reached out because he thought what we were doing was really cool. I was shocked to learn he knew very little about programming, but simply exploited the fact that most systems back then were written in such a way that the absence of an error was equivalent to success. So they found ways to make it to the next "step" without errors and so were granted access to things they shouldn't have been. |
|
|
Chris Granger
2019-04-30 14:26 #
I'm not so sure the latter is as uncommon as you think: edge cases fit your description. It does everything you intended for it to do given the inputs you've considered, but it also does crazy things on the inputs you didn't. Behavior emerges in contexts you didn't explicitly design it for. |
|
|
Will Crichton
2019-04-30 14:23 #
Two things to add. First, I just want to distinguish between emergent behavior and inconsistent models. I would expect that most bugs come from the programmer thinking the program did one thing, but then it does another. As opposed to thinking the program does something, it does that thing as you expect, but it also does another thing that’s unexpected. Second, this idea of emergent behavior in programmable systems is part of what killed off cognitive science research in programming in the mid 90s. Here’s a quote from “Let’s Get Real: A Position Paper on the Role of Cognitive Psychology in the Design of Humanly Useful and Usable Systems” (Landauer 1995): “Now consider that present computer programs and systems have sufficient complexity that most programs cannot be proved, and that irreducible bugs are the norm, and it is apparent that the other side of the interface is also severely limited in its theoretical tractability. When we then put humans and computers together into a jointly functioning interactive whole, we are almost certain to have a situation in which all of the prediction-defying pathologies of highly complex nonlinear dynamical systems will abound.” |
| 5 comments | |
|
|
Chris Granger
2019-04-30 14:22 #
I agree that composition and simplicity are different things |
|
|
Chris Granger
2019-04-30 14:21 #
I was responding more to the "simple rules.. highly non-linear effects" |
|
|
Kartik Agaram
2019-04-30 14:20 #
I don’t think that necessarily follows. You can have simple rules that are composable. The two feel like orthogonal axes. |
|
|
Chris Granger
2019-04-30 14:17 #
the simpler your ruleset is the more likely your system will do things you didn't intend for it to do |
| 1 comments | |
|
|
Chris Granger
2019-04-30 14:16 #
But! Emergent behavior is the place where bugs arise. It's where the system does things that you didn't explicitly intend for it to do. |
| 1 comments | |
|
|
Chris Granger
2019-04-30 14:15 #
Sussman has a really neat paper talking about something similar in regards to building robust systems |
|
|
Chris Granger
2019-04-30 14:15 #
Alan Kay deeply advocates for the idea of independent agents working in concert the way biological systems do |
|
|
Chris Granger
2019-04-30 14:14 #
There's a really deep disagreement in the programming language world about the value and purpose of emergent behavior |
|
|
Chris Granger
2019-04-30 14:13 #
that's an interesting framing |
|
|
Kartik Agaram
2019-04-30 14:12 #
@Chris Granger That was what I got out of @Jeremy Penner’s point at 1556655545.323500.html as well: The Game of Life has simple rules, but they lead to highly non-linear effects. Perhaps composability is more important than simplicity. (Simplicity = virtue ethics, composability = consequentialist ethics?) |
| 4 comments | |
|
|
Duncan Cragg
2019-04-30 14:11 #
right |
|
|
Chris Granger
2019-04-30 14:11 #
There's a beauty in true simplicity, but its generality can also make it nearly useless :slightly_smiling_face: |
|
|
Duncan Cragg
2019-04-30 14:10 #
yeah we (I) love those terse powerful constructs, but .. |
|
|
Chris Granger
2019-04-30 14:10 #
> easy for humans in general, while being as simple as possible That was a really interesting tension I discovered working with people who had much deeper math backgrounds than I did. There were a fair number of cases where we had to leave the "simpler" thing behind, because it was no longer very usable. |
|
|
Duncan Cragg
2019-04-30 14:06 #
although I'll let you listen to @Chris Granger, obvs.. :smile: |
|
|
Duncan Cragg
2019-04-30 14:05 #
be wary of Victor/Hickey/Kay fanpersonism |
|
|
Duncan Cragg
2019-04-30 14:04 #
and I still say "easy for humans in general, while being as simple as possible", and "don't listen to programming language gurus" :smile: |
|
|
Benoît Fleury
2019-04-30 13:54 #
I personally got a lot of mileage from Rich's idea of simplicity and decomplecting, especially at small scale. It is nice to have everything decomplected. You can just drop what you don't need anymore, compose, add new things... while avoiding breakage. Many other authors advocate the idea of not overloading concepts in design. That said, we need to be careful, especially at scale. Something that may seem simple can become a mess. I would say that something like software semaphors are simple in Rich's sense. I don't think they're simple at scale. Alan Kay has a also a talk on simplicity where he emphasizes the importance to find "slightly more sophisticated building blocks". (https://www.youtube.com/watch?v=NdSD07U5uBs) But they both seem to agree that "easy" shouldn't be a goal. |
| 2 comments | |
|
|
Duncan Cragg
2019-04-30 13:39 #
so the best programming system has to consider what is easy for humans in general, while being as simple as possible |
|
|
Duncan Cragg
2019-04-30 13:38 #
.. and, I'm completely content with state complecting value and time, because as a human being it's as familiar to me that way as the air I breathe |
| 1 comments | |
|
|
Duncan Cragg
2019-04-30 13:19 #
.. but .. something can be conceptually/theoretically very simple yet pointlessly hard to use in practice - e.g. Forth, S+K combinators, FP needing Monads to be useful, thus losing simplicity, etc. |
| 45 comments | |
|
|
Steve Krouse
2019-04-30 12:43 #
@Tom Lieber has written great notes from Rich Hickey's Simple Made Easy talk (http://alltom.com/pages/best-lectures/#simple-made-easy). Even though I've already watched it twice, I realized from these notes that I could use a refresher. It's so great. Some great points he makes that I had forgotten about: • simple/complex is objective (not interleaved with something else) • easy/hard is subjective (how near at hand or familiar it is to what you already know) • • We spend too much time debating the easiness (or familiarity) of various approaches. Familiarity is subjective so it's a useless debate. Simplicity is an objective thing to shoot for. • We are overly focused on easy (quick/convenient and familiar) • There's a tradeoff (from Sussman) between our understanding of a system and its flexibility • The human brain is limited to understand a few things at a time, so if things are interbraided, you can't understand it them in isolation. You need to examine multiple things at the same time, which limits your understanding • Easy gives you early speed (like a sprinter) but simplicity gives you long-term productivity (marathoner) • Many things that are easy/familiar are very complex, such as OOP concepts. Functional programming replaces a lot of easy/complex concepts with hard(unfamiliar)/simple ones. • Complect is to interleave, entwine, braid. It's bad: don't do it. • Compose means to place together, and this is the right way to do it. • Modularity and simplicity is key, but you have to make sure things are actually independent and not just hiding the dependencies by moving the code around • State complects value and time. (FRP allows you to untangle these two with Event/Behavior types account for time properly.) |
|
|
Ivan Reese
2019-04-29 16:54 #
> @William Taysom I generally loath force directed layouts Me too — usually because they're something applied to your work in one fell swoop, not a tool (or suite of tools) you wield interactively. Compare: the tools used for UVW unwrapping when texturing 3d models. > @Nick Smith Text IS a visual. This is a more relevant point than it appears at first glance. It indicates that you can mix text with other kinds of visuals. Yes, yes, hell yes. And anyone saying "In text languages, we have names, which (while sometimes problematic) are more powerful than arrows" is missing the fact that VPLs also use names: to name "functions" (whatever form they take), to name "parameters" (ditto), and sometimes even to name variables/data representations/abstractions. In a rich VPL, names are used to great effect. In this way, the visual languages are a superset of the text languages. ... Zooming out for a sec — we should all make sure we're looking at the implied higher points found by ascending from the local maxima of the best existing languages (text, visual, what have you) when discussing paradigms. The line of reasoning, "Most __ have sucked, therefore we shouldn't bother anymore with ___" inhibits progress. Yes, most boxes-and-arrows languages have sucked. But a few of them are fucking phenomenal. When we speak of text languages, we're all proceeding with the tacit assumption that APL & Idris & Racket & other "great languages" are our baseline, not Pascal & SPARC assembly & xBase. Since we're here to study and create something better than the best of what currently exists, we shouldn't mire ourselves in the bottom of the barrel wrestling over which bad thing is most indicative of the failings of its class. ... > @Nick Smith Two major dimensions are composition and choice. Almost every language construct in any functional language is just a combination of these. Function application, function composition, product types, and sum types are just different flavours of composition. If-expressions, case-expressions, and pattern matching are all just different flavours of choice. [vibrant whirring noises coming from our brains as we take in all our favourite language constructs with these fresh eyes] > @Nick Smith But either way, it's not up to a disbeliever to prove the absence of something; it's up to a believer to prove its existence. Working on that. |
| 19 comments | |
|
|
Ivan Reese
2019-04-29 16:54 #
I highly enjoyed the recent discussion of Visual Programming Languages. Here are some of my favourite quotes, that seemed to capture something particularly meaningful to me. (Sorry about all the notifications <= credit where due. Broken into a few messages due to message length limits.) > @magicmouse94937 very few languages today include FSM syntax, even though it is one of the key fundamental components of every program. Also, in every real-world FSM you have the possibility that one of the steps will fail. Having a system fail softly on a key step failing is a very interesting aspect neglected in most languages. Warm take: Any new [visual?] language worth its salt should include a simple, generic FSM facility as part of the standard library. > @Stefan Lesser [...] an abstract graph, with generic arrows, their positions and lengths without meaning, pointing from and to equally as dimensionless boxes, all floating in a space that has no meaningful coordinates either — you can move things around and it doesn’t change anything other than the visualization. It feels like there's another shoe yet to drop, when it comes to the design of VPLs — even the boring, traditional "node-and-arrow" ones. Giving the graphical characteristics of a visual language heightened meaning, representation, and dynamism is easily imaginable, and under-explored (evidence to the contrary heartily welcomed — I'll add it to the codex). So why don't we have it yet? One theory: used to be a painfully high bar for creating dynamic visual environments, but the explosive advancement of video game authoring tools is really lowering that bar. I mean.. have y'all played SpaceChem? Despite its intentionally constrained GUI (it is a game, after all), it's richer with metaphor than any VPL I've yet laid my mouse on. > @Tudor Girba it’s also important to distinguish between the way we write and the way we understand code. Whenever we talk about programming languages, we tend to conflate the two. The code is always consumed in the same shape it’s written in. I believe that is unnecessarily limiting. This is probably my favourite reason to be optimistic about visual languages. With a text language, programmers would not tolerate the structure of their program being changed willy-nilly by their IDE. You expect the code to execute in the order it's written, within the scope it's declared, conveyed by the file you've allotted to it. With a visual language, programmers could be more permissive of wild alterations of structure and substance of the code in flagrante, including things like: which connections actually exist, how visual code-elements are laid out, how many & which names are assigned to a given thing, whether data may only flow along programmer-established paths, what data is present in the system, whether the execution model should be deterministic or not, and so forth. Why more permissive? Both for the cultural reason that this is uncharted territory free of the spectre of entrenched norms, and for the technical reason that visual communication allows a plurality of representations of the same fundamental thing, all of which can be treated as variably "real" or "virtual". The artifact of writing does not allow this flexibility — at most, it has typography; there's no "impressionistic" lettering versus "abstract" lettering, outside of concrete poetry. Again, the space of powerful system-building interfaces with shifting representations of the system has been best explored by video games (as a whole — not any specific game). But it's also been very well explored by 3D modelling/animation tools, which must show many, many different-but-mostly-equivalent representations of their data, all of which with subtly different degrees to which a detail is "real" or "virtual". All existing visual language GUIs (*That I've seen — counterexamples welcome) seem starved by comparison. |
| 1 comments | |
|
|
Peter van Hardenberg
2019-04-29 07:56 #
Who here has tried the new Dreams "game" for PS4? I feel like in many ways it represents the fulfillment of the dreams of a lot of folks here. |
| 22 comments | |
|
|
Benoît Fleury
2019-04-29 05:15 #
@Kartik Agaram I read those recently, I particularly liked the idea of starting from simple authoring and gently progress into programming. The goal being for the user to be rewarded every step of the way. There are many other interesting ideas like transclusion of boxes, use of spatial metaphor, everything can be inspected for learning purpose... |
|
|
Will Crichton
2019-04-28 21:56 #
A good place where that’s extremely far from true (where this ideology could have a big impact) is hardware. Most closed-source, proprietary toolchains you’ll find. |
|
|
Tim Swast
2019-04-28 21:48 #
I just attended Linux Fest Northwest, and there were a lot of GNU / FSF people there. It got me thinking again about that community, and I think they're motivation aligns well with this group. They want software to be modifiable in ways that aren't legally encumbered, whereas this group wants software to be modifiable in ways that aren't unnecessarily complicated. I wonder how this group would modify the FSF's 4 user freedoms to align with the goals of the future of coding? >>> Free [libre] software means users have the four essential freedoms: (0) to run the program, (1) to study and change the program in source code form, (2) to redistribute exact copies, and (3) to distribute modified versions. |
| 2 comments | |
|
|
Kartik Agaram
2019-04-28 21:03 #
Has anyone here read the Boxer papers? Boxer was the sequel to Lego, if I understand correctly. A great example of visual languages with generous use of text. The following is one of my favorite papers: https://web.archive.org/web/20150905171238/http://www.soe.be… |
|
|
Kartik Agaram
2019-04-28 20:58 #
@Nick Smith Looking forward to it. I had no idea you were one of us with experience teaching kids. Here’s what I did for two years, and it worked great in a 1-on-1 setting: http://akkartik.name/post/mu (Spoiler: it’s absolutely text-based). I saw no problems with (a small number of) keywords. I did see value in minimizing punctuation. One implication: don’t start kids on one of the Lisps. (Even though I love Lisp in general.) I don’t understand your “It’s 90% boxes-and-arrows, 8% Scratch clones, and 2% of unique stuff” comment. Why chase novelty for its own sake? Similarly, I don’t think boxes and arrows or blocks have been given nearly enough rope in the last 5 decades. You’ll need to elaborate on why you think they’re “objectively bad”. It’s not at all obvious that we need to try something different. One could equally make the case that we need to persist with and incrementally improve already-attempted ideas. (I say this as someone pro-text for the most part.) |
| 11 comments | |
|
|
Edward de Jong
2019-04-28 20:26 #
in building many products over the years, the best test of how good the interface was, was to put the product into the hands of seniors or young children. Both are excellent test audiences. If it is truly intuitive, the kids pick it up fast. If it is simple and well organized, the seniors will respond. Both groups have different strengths: seniors have no memory, and kids have little abstraction power. |
| 1 comments | |
|
|
Nick Smith
2019-04-28 16:00 #
So to come full circle: representations do matter, and there is still, despite historical failings, an opportunity for visual representations to improve comprehensibility. It's easiest to see when you look at learners, but they needn't be the only ones to enjoy the possible benefits. Give me a few weeks to produce a demonstration of the kind of representations I'm talking about and maybe it will be easier to believe my argument. |
| 3 comments | |
|
|
Nick Smith
2019-04-28 15:56 #
That's an argument for why "visual languages" shouldn't be thrown in the trash heap but not for why they should be pursued. To shed light on the latter proposition: I teach people how to code for a living, and one solid truth that reveals itself is that keyword-and-symbol-based representations of language constructs are hard to understand. We may not realise with our survivorship bias just how unintuitive a bunch of keywords are, but a language's syntax is fundamentally a representation of its semantics, and learning a language is about being able to recognise, comprehend, and interact with that semantics. Keywords and ASCII symbols obscure language semantics to an extreme degree. This is not merely an assertion - it is extraordinarily apparent from watching people learn how to code. The only question is: how can we do better? |
|
|
Nick Smith
2019-04-28 15:20 #
I'm seeing the proliferation of this false dichotomy again between text and visuals. Text IS a visual. This is a more relevant point than it appears at first glance. It indicates that you can mix text with other kinds of visuals. Despite what has historically been produced, the other kinds of visuals do not have to be in the form of boxes and arrows, or lego blocks, or anything which has proven itself objectively bad through 5 decades of repeated failed attempts. I believe people designing these visuals just need to try something different. It's true that there aren't many concepts in an abstract language that can even be visualised. But there are some. Two major dimensions are composition and choice. Almost every language construct in any functional language is just a combination of these. (Imperative languages throw in 70 other "features" which I argue makes visualisation a fool's errand). Function application, function composition, product types, and sum types are just different flavours of composition. If-expressions, case-expressions, and pattern matching are all just different flavours of choice. Visualising these naively leads you to some kind of graph, which leads to a naive boxes and arrows visualisation. But Stefan rightly points out that humans are good at recognising names, and are bad at navigating a soup of arrows, so we should probably use names as the building blocks of the visualisation. This does not necessarily lead to "text-based programming", but it does lead to a generous use of text within the visualisation. |
| 1 comments | |
|
|
William Taysom
2019-04-28 07:46 #
@Stefan Lesser good points about dimensionless boxes and arrows. I generally loath force directed layouts for this very reason. At the very least, humans are beasts with a strong up/down sense. |
|
|
Stefan Lesser
2019-04-28 07:09 #
The more I think about it, the more I feel like replacing text with another form of visualization isn’t going to be the solution. Text-based programming is better with an IDE that offers different visualizations for different tasks/contexts (hat tip to @Tudor Girba). So I think the question is not “What will replace text-based programming?” and instead “Which visualizations will enhance programming so much that we find ourselves preferring those over text in specific contexts?” |
| 31 comments | |
|
|
Stefan Lesser
2019-04-28 07:08 #
Hypothesis: the greatest affordance text delivers is supporting our natural desire to name things. We do this all the time when we communicate, and we know very well which words to use to transmit pretty complex concepts. In (text-based) programming, names (symbols) solve all the problems of referring to the same thing over and over again. With arrows we get to represent some of the references visually, at the expense of trying very hard to only have the thing they refer to represented once. I know, there’s the joke about naming being one of the two or three (depending on how funny you try to be) hardest things in programming. Although we’re actually pretty good at giving things names. We’re just terrible at agreeing on the same name for the same thing. |
|
|
nicolas decoster
2019-04-28 06:29 #
I like your argument on the difficulty to find an generic visual programming other than box-and-arrows or lego-blocks. I guess we ended to those two main representations because when we code we often describe things with sequences (then piles of Scratch like lego-blocks are a good metaphor) and control flows (then box-and-arrows are a good metaphor). Although, for some specific domains other metaphor are necessary (the 2% of unique stuff) as you say with your example on audio and video. |
|
|
Stefan Lesser
2019-04-28 01:56 #
>It's 90% boxes-and-arrows, 8% Scratch clones, and 2% of unique stuff This strikes me as an important insight which leads to the question, “Why is the distribution so heavily skewed towards boxes-and-arrows?” If we’d be completely in the dark, couldn’t we expect a lot more variety? Maybe one possible answer has to do with the challenge that building a generic visual programming system is by definition domain-agnostic and therefore can’t take advantage of established metaphors in a target domain? I’m thinking of (as usual) music or video production tools, where a lot of the visual tools rely on metaphors that represent time by mapping it to (horizontal) space, which rests on the importance of time in these domains. If you can’t define certain specifics because you want to create something universal, the visualizations available to you will be limited to the most abstract of domains, often math — and then you end up representing minimal structure as an abstract graph, with generic arrows, their positions and lengths without meaning, pointing from and to equally as dimensionless boxes, all floating in a space that has no meaningful coordinates either — you can move things around and it doesn’t change anything other than the visualization. |
| 1 comments | |
|
|
Mariano Guerra
2019-04-27 03:50 #
from the same page :disappointed: "It is with a sad heart that we've decided to not pursue monetization of Interface Vision's core technologies. We've done a lot of amazing things, but there just isn't a market for visual programming environments: yet. It will happen: it's inevitable. But just not now." |
|
|
Nick Smith
2019-04-27 02:28 #
It's 90% boxes-and-arrows, 8% Scratch clones, and 2% of unique stuff |
|
|
Nick Smith
2019-04-27 02:27 #
Here's a fairly comprehensive list btw: http://blog.interfacevision.com/design/design-visual-progarm… |
|
|
Nick Smith
2019-04-27 01:38 #
I guess spreadsheet languages qualify too, though I haven't found many of them interesting |
| 1 comments | |
|
|
Nick Smith
2019-04-27 01:31 #
And traditional text-based languages augmented with visual widgets don't qualify |
|
|
Nick Smith
2019-04-27 01:29 #
The visuals of Jonathan Edwards' Subtext prototypes are perhaps a good example of the kind of non-cliche ideas I'm looking for |
|
|
Nick Smith
2019-04-27 01:27 #
I consider a language to be "visual" if its structure is something more than lines of text. In particular, it would likely have a truly 2D layout. And the layout should not be trivial (e.g. not just traditional lines of text with maybe a two-column split for if-statements). |
|
|
Nick Smith
2019-04-27 01:25 #
Everyone reaches for the "boxes and arrows" idea |
|
|
Nick Smith
2019-04-27 01:25 #
I'm struggling to find more than one or two historical examples where this is the case (Lamdu is probably the closest) |
| 4 comments | |
|
|
Nick Smith
2019-04-27 01:24 #
Has anyone ever seen a purely functional visual programming language that does NOT visualise the code as a dataflow graph? |
| 4 comments | |
|
|
Stefan Lesser
2019-04-26 21:35 #
Yesterday, I finished reading @Antranig Basman’s paper An Anatomy of Interaction: Co-occurrences and Entanglements https://www.shift-society.org/salon/papers/2018/revised/anat…. Today, I just read ribbonfarm’s blog post Worlding Raga: 5 — World How? https://www.ribbonfarm.com/2019/04/25/worlding-raga-5-world-how/. In a strange way for me these two resonate with overlapping frequencies creating beautiful harmony, although I can’t quite put my finger on what exactly makes me think that. |
|
|
Srini Kadamati
2019-04-24 07:03 #
https://www.indiegogo.com/projects/the-augmentation-of-dougl… |
|
|
Mariano Guerra
2019-04-24 01:12 #
Why do we need modules at all? by Joe Armstrong http://erlang.org/pipermail/erlang-questions/2011-May/058768.html |
| 5 comments | |
|
|
Stefan Lesser
2019-04-23 14:37 #
One paper @Joel Jakubovic references in the blog post is Infra: Structure all the way down (https://sites.cs.ucsb.edu/~holl/pubs/Hall-2017-Onward.pdf). @Joe Trellick has recommended that one to me a while ago also. So I finally read it. And then I read Christopher Hall’s thesis (http://www.christopherkhall.com/Dissertation.pdf), which is basically a not even that much longer version of the paper. I find it quite interesting. The storage format is really well thought out and has some interesting affordances for use cases I didn’t expect to be served by a storage format directly, but now after reading make a lot of sense to me. Not much has happened since the release of the paper it seems. Google Scholar only found one referencing paper, unsurprisingly one that’s also mentioned in @Joel Jakubovic’s blog post, and which is a critique to a paper @Antranig Basman has his name on. We’re all here in this together it seems. :-) The website talks about open source (still pending university’s approval) and standardization. But given the status of the site it could equally likely be that the author has moved on. Has anybody done anything with Infra, or knows more about what has happened or is happening with it? And what are your thoughts about Infra? |
| 2 comments | |
|
|
Shalabh
2019-04-22 13:19 #
https://programmingmadecomplicated.wordpress.com/2019/04/21/kent-phd-proposal/ -- Congratulations @Joel Jakubovic! |
|
|
Dan Cook
2019-04-22 13:02 #
This might be related to @Pavol Privitzer's work |
|
|
Mariano Guerra
2019-04-22 13:01 #
Interactive Latent Space Exploration through a Spreadsheet Interface |
|
|
Mariano Guerra
2019-04-22 13:00 #
https://vusd.github.io/spacesheet/ |
| 3 comments | |
|
|
Scott Anderson
2019-04-22 10:22 #
I guess not exactly, because its not FRP (there are no events, I don't think) |
|
|
Scott Anderson
2019-04-22 10:19 #
I think that's what @Glen Chiacchieri flowsheets does https://www.youtube.com/watch?v=y1Ca5czOY7Q |
|
|
Brian Hempel
2019-04-22 10:09 #
Has anybody explored FRP + Spreadsheets? That is, dump the FRP events into a spreadsheet and make that the basis of your programming model? Seems like there’s potential there. |
| 14 comments | |
|
|
Wouter van Oortmerssen
2019-04-20 13:18 #
Either way, my above statement was about Tudor's crisis of existing software, I wasn't claiming that end user programming isn't possible, or however you interpreted it. |
|
|
Wouter van Oortmerssen
2019-04-20 13:15 #
We can make the whole planet into doctors too. Everyone has applied a bandaid. It's just literacy. |
|
|
Dustin Getz
2019-04-20 13:02 #
> we can’t just simply make the whole population of earth into programmers Sure you can, we all know algebra, and CS is getting taught in grade school. This is just literacy |
|
|
Wouter van Oortmerssen
2019-04-20 12:39 #
the special-purposeness of software is also a problem.. sometimes it seems like the amount of software systems is almost proportional to the amount of users.. |
|
|
Wouter van Oortmerssen
2019-04-20 12:38 #
yes, that's what I alluded to.. we can't just simply make the whole population of earth into programmers :slightly_smiling_face: |
|
|
Tudor Girba
2019-04-20 12:23 #
When you go inside those companies, they feel this problem quite intensely. I believe we did not feel this crisis more broadly because we were able to grow the developer population exponentially. However, as that growth slows down (and it already does) this effect will be more evident. |
|
|
Tudor Girba
2019-04-20 12:16 #
@Wouter van Oortmerssen By recycling I mean the following: a system runs as long as its valuable, but when the environment changes (due to new situations, new laws, more/less/different users etc) the system should change with it. In other words, we should reuse the parts we want, but get rid of the others and refurbish them for new purposes. I have met many companies that would choose to not have their systems, or at least have them in a different shape. This is not sustainable. |
|
|
Wouter van Oortmerssen
2019-04-20 12:09 #
Oh software.. so much fun, so much pain.. |
|
|
Wouter van Oortmerssen
2019-04-20 12:09 #
Not great for programmers either, as an ever larger percentage is going to be maintaining crap just because someone still needs it |
|
|
Wouter van Oortmerssen
2019-04-20 12:07 #
Or we need to get better at moving users to better software.. good luck |
|
|
Wouter van Oortmerssen
2019-04-20 12:06 #
we can only recycle/abandon once the number of users (or number of users willing to pay for its maintenance) drops to 0, which rarely happens.. so yes, we have mountains of crap code that users who are stuck with using it are going to end up paying for it to be maintained. Or put differently, the more software gets created, the more we need endless amount of programmers.. so its a crisis of programmers more than of software :slightly_smiling_face: |
|
|
Tudor Girba
2019-04-20 11:45 #
I agree. However, I still believe we are in a crisis of great proportions (I call it software environmentalism crisis): we are creating software at a much higher pace than we are able to recycle. We are essentially drowning in software we are not able to move anymore. So, if we are to create a sustainable future, it must be one in which an old system is kept around because of its value and fitness not because of the impossibility to remove. I believe this is essential. |
|
|
Dan Cook
2019-04-20 11:42 #
Another perspective: Maybe we're still in the "dark ages", and programming will evolve to something being our imagination in a couple hundred years. A more positive perspective on that perspective: How exciting to get to be here at the start of it all, shaping the future! |
|
|
Tudor Girba
2019-04-20 11:37 #
@Dan Cook interesting observation. I believe that we can improve dramatically our ability to assess our own systems. I can back this claim with a decade worth of case studies. |
|
|
Dan Cook
2019-04-20 11:21 #
Nevertheless, I am also quite convinced that an enormous amount of complexity is software is (in many cases) simply due to poor practices or a fundamental lack of understanding (or proper application) of basic things like proper composition/decomposition/factoring of code, choosing more complex paradigms due to bias or hype, etc. If that could somehow be fixed (which may only be possible on a small scale, e.g. individually or on small team), I think that would do more for software than any new language could -- unless it truly was something fundamentally different than a traditional language |
| 1 comments | |
|
|
Dan Cook
2019-04-20 11:03 #
I don't disagree, and I see a lot of promise in things like functional programming (e.g. lambdas, map/reduce), classless objects, type inference, triats / implicit interfaces (e.g. go-lang). |
|
|
Wouter van Oortmerssen
2019-04-20 10:01 #
Until one of y'all makes a breakthrough with a graphical/by-example/end-user/whatever language, we still need innovation in traditional/text-only/for-professional-programmers languages to happen as well, as it is what 99.999% of this world is churning on, and won't go away overnight, or maybe even ever. Any progress there is super valuable too. Just Bosque aint it. Myself, I am still trying to fix things as low level as type systems and memory management :slightly_smiling_face: |
|
|
Dan Cook
2019-04-20 09:51 #
If there any real innovation to come in the form of programming languages, I think it has to be something a lot closer to human models, and/or makes code significantly simpler to express & read, a/o is much higher level (e.g. taking what normally would need to be many components on different layers/systems, and making it trivially expressible ... like Dark or Webflow) |
|
|
Dan Cook
2019-04-20 09:45 #
I mostly agree with Nick and Wouter. The initial claims sounds amazing, and then it's a nothing really new and ugly syntax. I don't think the (confusing) blend between classes and ad-hoc objects is user friendly, and seems more computer-minded than human-minded (which is contradictory to one of its claims) |
|
|
William Taysom
2019-04-20 00:23 #
Depending on the audience (certainly this audience), it's best to say what's new because of course every programming language is going to need a bunch on standard equipment (or not so standard but at least existing). |
|
|
Wouter van Oortmerssen
2019-04-19 07:14 #
I don't even have anything against that.. but it doesn't help if you're trying to prove its a new paradigm :slightly_smiling_face: |
|
|
Wouter van Oortmerssen
2019-04-19 07:13 #
and it is not even particularly elegant.. it's big and kitchen-sink-y |
|
|
Wouter van Oortmerssen
2019-04-19 07:11 #
"Here's the next generation of programming language paradigms... that is just my personal cherry-pick of existing features" |
|
|
Wouter van Oortmerssen
2019-04-19 07:10 #
Yes, this paper has one of the highest "making strong claims" vs "failing to deliver" ratios I've seen in a long time |
|
|
Nick Smith
2019-04-19 02:56 #
The "regularized programming" model the author is trying to pass off as novel is plain old functional programming... :expressionless: |
|
|
Edward de Jong
2019-04-19 01:44 #
i looked over the source code for Bosque. Hardly any comments. Code is for computers, and comments are for people (including the author who months down the road may not remember why something was done). Maybe in big companies you can slip through the cracks. I was also surprised that Boeing bungled the software so bad for the MCAS system, a critical system that only read one of 2 sensors, and had numerous fatal - as in killing people - mistakes in their software. I sure hope that all the designers here make an effort in your new language to encourage people to comment their code. |
| 11 comments | |
|
|
Edward de Jong
2019-04-19 01:35 #
I have invited the developer to join this slack group, i hope he shows up. It is a lot of work to make a new language, and has a compiler, examples, a lot of work went into that project. |
|
|
William Taysom
2019-04-19 01:25 #
Maybe it will be as popular as Dart! |
|
|
Edward de Jong
2019-04-19 01:00 #
luckily for those in this group working on new languages, Bosque appears to be a disaster, i can't find a single thing new in it. Seems like a mashup of various other languages. |
|
|
Edward de Jong
2019-04-19 00:59 #
Well guys, looks like Microsoft has dropped their latest research language, called Bosque. https://www.microsoft.com/en-us/research/project/bosque-prog… |
| 4 comments | |
|
|
Dan Cook
2019-04-17 00:21 #
Many of us (in shaping the future of coding) are piggybacking on JavaScript for its ubiquity in the browser, flexibility, and simplicity. But it looks like we can now also generate & run assembly (WebAssembly) on the fly from within JavaScript! This opens up a new level of possibilities! https://medium.freecodecamp.org/get-started-with-webassembly… |
| 1 comments | |
|
|
Jack
2019-04-13 07:30 #
Regarding "the programming environment is primary, PL is secondary" (see tweet): do you consider yourself to be working on an "environment" rather than "just a language"? If not, have you considered working on an environment? What is preventing a more balanced approach (assuming this is indeed a good idea)? https://twitter.com/stevekrouse/status/1115569100279951360 |
| 29 comments | |
|
|
Kartik Agaram
2019-04-08 09:45 #
I think discussions of conventional programming languages belong in #linking-together. Who's with me? |
| 7 comments | |
|
|
Stefan Lesser
2019-04-08 07:41 #
At least one thing Perl excels at: http://colinm.org/sigbovik/ |
|
|
Mariano Guerra
2019-04-08 04:31 #
https://aearnus.github.io//2019/04/05/perl6-is-the-world-s-worst-ml |
|
|
Mariano Guerra
2019-04-08 04:31 #
"Perl tries to put the complexity where it will do the least harm, and where its victims may have the best chance of surviving it. " "Ultimately, I think that we’re pretty happy with Perl 6 being the “World’s Worst ML”, so long as it can also (simultaneously) be: the “World’s Worst Smalltalk”, the “World’s Worst Lisp”, the “World’s Worst Snobol”, the “World’s Worst QCL”, the “World’s Worst Erlang”, the “World’s Worst Prolog”, the “World’s Worst Python”, the “World’s Worst C”, and even the “World’s Worst Perl 5”." |
| 1 comments | |
|
|
Edward de Jong
2019-04-08 00:56 #
PHP6 has gone full "kitchen sink" approach, adding every feature they could think of. PHP selected a very interesting business model: you give away the program, but sell the debugger, and Zend systems has existed for a long time by trading free inclusion of a very powerful language into the Apache web server, while serving the market for professional programmers who are tired of doing "print" statement debugging. In much of the open source world this kind of bargain exists in different ways. It does give people a lot of free stuff, and then a much smaller group, perhaps 0.001% support the product. Red Hat does similar things, but i suspect does a lot better than PHP in terms of percentage of people paying. Red hat has the free Centos community version, then a paid one. As someone who made software for people in the audio/video/print publishing industries, my customers all lived and died by protection of copyright, and at different times in history their earnings were impacted mightily by piracy. Just because it has no physical cost to copy, doesn't mean it should be copied massively, and one of the reasons American/UK music dominates the world is our pretty good protection, but Napster, and the massive introduction of Asian pirated music CD's destroyed the CD industry. Not many people know that the CD wholesaling business was destroyed in america due to Asian product blending into the stream to such a degree that it basically ruined CDs. I think that Apple is among the few people left who care about protecting IP of software, and look at how much creativity they unleashed when piracy is kept to a minimum. I know that my opinion is in the small minority, but i would like to see people pay for software one time like they used to, instead of all these damn subscriptions. I don't want to subscribe to 100 things. That really bugs me, but if piracy is not controlled it is the only survivable business model. |
| 5 comments | |
|
|
Corey Montella
2019-04-05 08:18 #
FYI, the actual talk starts around 50 minutes. |
|
|
Mariano Guerra
2019-04-05 05:05 #
no preview it seems... title "PuPPy Presents its ANNUAL BENEFIT in Seattle: A conversation with Language Creators" |
|
|
Mariano Guerra
2019-04-05 05:05 #
maybe I'm reposting, I had the tab open and just watched it, but maybe I saw it somewhere else and it's useful: https://www.youtube.com/watch?v=csL8DLXGNlU |
|
|
Carl Tashian
2019-04-04 16:32 #
Do you experience “developer head” after spending 10-15 hours writing code? For me, “developer head” means difficulty socializing, difficulty being present and self-aware (being in my thoughts too much), impaired situational awareness, fuzzy vision, the tendency to lead with details and miss the headline entirely. The effect lasts about an hour after a long coding sesh. I see it in others all the time. Is there a name for this? It should have a better name than “developer head.” :smile: |
| 8 comments | |
|
|
Dylan Lederle-Ensign
2019-04-04 06:29 #
http://blog.fogus.me/2019/04/03/notes-on-interactive-computing-environments/ |
| 3 comments | |
| # |
Jack
2019-04-04 02:37 #
@Tudor Girba at PharoDays, Lille :smiley: |
| 2 comments | |
|
|
Felix Kohlgrüber
2019-04-04 02:13 #
Do you guys know some kind of runtime that monitors memory usage / runtime and warns / asks whether to continue when either is unreasonably high? Wouldn't it be cool if your running program could ask things like "the for loop X will take ~5 hours to complete, are you sure you want to continue?" or "your program is about to allocate 20 gigabytes of memory, continue?"? My current approach is to just run my programs and hope for the best. If it takes a long time I'll probably abort and restart with print statements inserted at appropriate places and if the computer becomes unresponsive I'll try to kill the process before its memory usage crashes my OS. It'd be really nice if a runtime would detect these things and warn me, at least during development. A concrete example where I would find such a system helpful is the Advent of Code (https://adventofcode.com/). For most of its challenges, there are easy but slow and more complicated but fast solutions. Implementing a simple solution first and checking whether it works for the given input would be much easier using a runtime like the one I described above. |
| 16 comments | |
|
|
Kartik Agaram
2019-04-03 11:34 #
/poll "The thing I envision for the future of coding will be:" "Binary compatible with some existing platform (support loading libraries, etc.)" "Source compatible with some existing platform" "Muscle memory compatible with some existing platform (looks like an IDE, supports POSIX interfaces, etc.)", "Conceptually similar to existing platforms", "Utterly alien" |
|
|
Mariano Guerra
2019-04-03 01:46 #
/poll "The thing I envision for the future of coding is for:" "Programmers" "Non Programmers" |
|
|
Jack
2019-04-02 01:36 #
https://charlieroberts.github.io/annotationsAndVisualizations/ (@Steve Krouse) |
|
|
Shalabh
2019-04-01 15:46 #
> The goal of Field is to make the power of programming accessible to all. What if we could all program our own web, without having to complete a degree in computer science? What if making a webapp was as easy as writing a document? http://supersystemic.studio/field/ |
| 4 comments | |
|
|
Sean Aubin
2019-03-30 16:17 #
Often when I'm discussing Dynamicland, I get the question: "why not just use a giant iPad" The only response I can come up with: - tactile manipulation is often necessary for learning - familiar objects, like paper and glue, provide well-defined affordances which cause minimal surprise, as opposed to anything in an iPad which will have surprising limitations |
| 41 comments | |
|
|
Roben Kleene
2019-03-29 09:41 #
This tutorial series is illustrating how to build a Markdown editor that can execute code blocks by sending them to a REPL (it uses Swift and AppKit so it's macOS only) https://talk.objc.io/episodes/S01E145-setting-up-a-document-based-app |
|
|
nagle
2019-03-27 12:00 #
@Jonathan Edwards got it. thanks! i feel really drawn to ppig, based pretty much on your enthusiasm... |
|
|
Jonathan Edwards
2019-03-27 11:56 #
@nagle They're both good. LIVE is more focused on programming per se. PPIG has a broader interest in the human side of computing: programming, using, and even politics. But despite that broadness it feels like a closer-knit community with deeper commitments. |
|
|
nagle
2019-03-27 11:37 #
http://www.ppig.org/about |
|
|
nagle
2019-03-27 11:37 #
@Jonathan Edwards your raw excitement for PPIG is contagious |
|
|
nagle
2019-03-27 11:37 #
@Jonathan Edwards do you have any contrast between LIVE and PPIG? |
|
|
Jonathan Edwards
2019-03-27 10:11 #
The LIVE Programming Workshop call for submissions is up: https://2019.splashcon.org/home/live-2019#Call-for-Papers-Essays-and-Demos Good (best?) meeting place for the interests of this community |
| 2 comments | |
|
|
Nick Collins
2019-03-25 16:08 #
Show FoC: I made a demo video of structure editing in sketch n sketch: https://twitter.com/NickMCThree/status/1110281821307191302?s=09 |
| 2 comments | |
|
|
Steve Krouse
2019-03-23 07:18 #
!everyone in case you missed the announcement (or forgot), the meetup at Dynamicland is tomorrow!! More details in #in-san-francisco |
| 2 comments | |
|
|
Jonathan Conway
2019-03-22 16:05 #
Not sure if it’s been a topic of discussion yet, but… “the economy”. Peter Thiel has been saying that he thinks we’re in an era of “stagnation”, where scientific and technological progress have essentially ground to a stand-still. The word “technology” today is almost immediately assumed to mean “information technology” of some kind, where 50 years ago, people might’ve thought of flying cars or underwater cities. Does anyone agree/disagree/have thoughts on this hypothesis, or on the nature and state of the global economy in general, as it relates to the future of software and technology? Big topic, I know, but relevant to thinking about the future, I think. |
| 5 comments | |
|
|
Stathis Sideris
2019-03-22 03:47 #
https://old.reddit.com/r/ProgrammingLanguages/comments/b2a61… |
| 4 comments | |
|
|
Corey Montella
2019-03-20 20:09 #
https://www.inkandswitch.com/end-user-programming.html |
| 37 comments | |
|
|
Mariano Guerra
2019-03-19 05:22 #
https://www.infoq.com/presentations/language-design-process |
| 1 comments | |
|
|
William Taysom
2019-03-18 23:57 #
And if you look at our best digital system – it took billions of years to really get going. |
|
|
Iridian Kiiskinen
2019-03-18 23:55 #
@Kartik Agaram indeed. That was a very interesting one :slightly_smiling_face: |
|
|
Kartik Agaram
2019-03-18 23:54 #
http://johnsalvatier.org/blog/2017/reality-has-a-surprising-amount-of-detail |
| 2 comments | |
|
|
Iridian Kiiskinen
2019-03-18 23:54 #
One of the most interesting things on the domain of maths is the fractal-like category boundaries between provable, provably unprovable and the what-the-heck-is-I-don't-even. In computation the design tradeoffs on algorithms and data structures sometimes feel a bit similar... and, well: there's a point in real world applications where one just has to bite the bullet and accept that there's no general clean solution but it's tradeoffs all the way down. So the best one can do in cases like these is to make sure people have the chance to see the warning signs "Ask an expert once you venture beyond here." on their way. |
|
|
William Taysom
2019-03-18 23:54 #
I don't know if the world is going to wait for us to get it together. |
|
|
William Taysom
2019-03-18 23:52 #
Learning to use symbols and knowledge in new ways, across groups, across cultures, is a powerful, valuable, and very human goal. And it is also one that is obtainable, if we only begin to open our minds to full, complete use of computers to augment our most human of capabilities. In the computer we have a tool that does not just move earth or bend steel, but we have a tool that actually can portray symbols in new ways. We have a tool that radically extends our capabilities in the very area that makes us most human, and most powerful. Douglas Engelbart said that, or something close it. |
|
|
William Taysom
2019-03-18 23:50 #
We need to become better at being humans. |
|
|
William Taysom
2019-03-18 23:45 #
See, I should know better! And Floating point is simply one easy to point out flaw (or you could say tradeoff) of the many, we cannot ultimately avoid making. |
|
|
Dan Cook
2019-03-18 23:42 #
I'm a big fan of Crockford's DEC-64 proposal as a solution to the floating point problem |
| 2 comments | |
|
|
Kartik Agaram
2019-03-18 23:42 #
Oh look, @William Taysom and I are just repeating ourselves: 1.539253.html… |
|
|
Kartik Agaram
2019-03-18 23:13 #
https://hal.archives-ouvertes.fr/hal-00576641v1/document via https://news.ycombinator.com/item?id=11840406#11840911 My favorite direction for a solution: http://www.johngustafson.net/pdfs/BeatingFloatingPoint.pdf |
|
|
Iridian Kiiskinen
2019-03-18 23:04 #
Educate people that floating point arithmetic requires care, and you need to know the rules? Analytic math has domains where exact numeric solutions are non-tractable (if not in theory, then in practice). So best we can do is to make the rules of floating point arithmetic deterministic and straightforward as possible and then tell people to learn those rules. Too bad they're not deterministic even in practice, on the same hardware... |
|
|
William Taysom
2019-03-18 22:37 #
Friends, some days I simply don't know what we're doing. Open your nearest JavaScript console (or whatever) and observe 350680 / 8813712 * 2203428 == 2203428 * 350680 / 8813712. I'm sure you all know why this is false. But what can we do in the face of such sandy foundations? |
| 6 comments | |
|
|
Edward de Jong
2019-03-18 21:30 #
I don't agree with Prof. Alvaro that its okay to have only one user for your language. If it is useful, it should be widely used and not an obscurity. I am not a fan of Datalog and its derivatives. I am solidly in the Prof. Wirth camp, which is that Algorithms + data structures = Programs, and i believe the weak spot in computer science is data structures, as the fundamental algorithms are now fairly well known. |
| 7 comments | |
|
|
Peter Abrahamsen
2019-03-18 19:34 #
Here’s Peter Alvaro on language design as a way to get more intimate with a problem domain, how and why he ended up making one for distributed systems. https://www.infoq.com/presentations/language-design-process |
|
|
Mariano Guerra
2019-03-18 08:40 #
I think there's a VC firm behind producthunt and they invest in no-code tools https://medium.com/@rrhoover/the-rise-of-no-code-e733d7c0944d |
|
|
Mariano Guerra
2019-03-18 08:38 #
partnership at least |
|
|
Corey Montella
2019-03-18 08:32 #
sponsored by Coda |
|
|
Corey Montella
2019-03-18 08:32 #
"No code allowed, but here's this thing called Coda you can use" |
| 1 comments | |
|
|
Corey Montella
2019-03-18 08:31 #
So this is just a Coda advertisement? |
|
|
Mariano Guerra
2019-03-18 08:26 #
We're excited to announce that the Makers Festival is back — but with a twist. This Makers Festival will be “no-code” themed. |
|
|
Mariano Guerra
2019-03-18 08:26 #
https://www.producthunt.com/newsletter/2634 |
|
|
Dan Cook
2019-03-16 09:50 #
This could change so much! https://youtu.be/uIHPPtPBgHk @Ivan Reese, imagine the new possibilities for visual (and interactive) programming! |
| 17 comments | |
|
|
Gregg Tavares
2019-03-14 10:22 #
Anyone have an opinion on implicit member access vs explicit? Or even better, seen any concrete research or reason for one over the other? What I mean is C++, Java, C#, Swift, etc when you're in a method you can access members of the current instance implicitly. You don't have to specify this or self
vs
I feel like I prefer explicit over implicit. IMO it makes the code more readable since I can look at the only the line in question a little easier. In the implicit case when area() is defined many lines below I'd have no idea if width and height are variables in a more outer scope, global variables, or member variables. In the explicit case I immediately know they are member variables. That seems like a win. It also means one less argument over naming conventions. Microsoft use to use m_variable. Google uses variable_. That would all disappear if the language required explicitness like python and JavaScript for example. What are some negatives? I can see one being typing but if for all other reasons explicit is better than implicit then some language could just shorten the syntax. _.height for example. |
| 24 comments | |
|
|
Felix Kohlgrüber
2019-03-14 00:09 #
What languages / libraries / frameworks would you use to implement your future of coding vision and why? |
| 12 comments | |
|
|
Niluka Satharasinghe
2019-03-13 16:33 #
Hi @Joshua Horowitz: I was asking @Steve Krouse about how dynamicland handles accessibility issues and he suggested that I ask you directly. I’m curious, I’ve spent some time thinking about approaches I’d take, but I’m wondering what you’ve (dynamicland) done as I haven’t seen any info regarding that. |
| 9 comments | |
|
|
Daniel Bachler
2019-03-13 06:14 #
Hi there! I stumbled across the Future and Coding podcast and really enjoy it! I just saw this new scientific computing notebook by Mozilla that people here might enjoy: it runs entirely in the browser (with a scientific python stack crosscompiled to web assembly): https://hacks.mozilla.org/2019/03/iodide-an-experimental-too… - quite cool as it lowers the barrier for participation because vs e.g. Jupyter there is no headache around provisioning backend resources for users to run arbitrary code |
| 2 comments | |
|
|
Shalabh
2019-03-12 18:38 #
https://alarmingdevelopment.org/?p=1245. New post by @Jonathan Edwards. |
| 11 comments | |
|
|
Felix Kohlgrüber
2019-03-11 13:30 #
I discovered Michael L. Van De Vanter and his work today. He's been working on advanced code editors already when I was born and recognized several problems with structure editors a long time ago. I read the following papers [1, 2] and can only recommend them. Especially the idea of using only lexical information for structured editing [2] sounds very interesting. His website [3] lists more publications that might be interesting for this community as well. [1]: http://vandevanter.net/mlvdv/publications/the_documentary_structure_o.html [2]: http://vandevanter.net/mlvdv/publications/displaying_and_editing_sour.html [3]: http://vandevanter.net/mlvdv/publications/ PS: This demo video shows cool things like proportional fonts, managed whitespace and IDE features that still aren't widely used nowadays. And it's from 1994 :astonished:: http://vandevanter.net/mlvdv/publications/the-clarity-code-processor.html |
| 8 comments | |
|
|
Felix Kohlgrüber
2019-03-10 09:04 #
It seems like a lot of you guys have looked into structured / ast-based editors previously or even tried to implement an editor. I'd be interested to hear your thoughts about why these kinds of editors haven't been widely adopted. What are the challenges (both technical and social), what are the open questions, ...? |
| 36 comments | |
|
|
Shalabh
2019-03-10 00:57 #
Anyone familiar with RINA (an alternative network architecture)? https://en.wikipedia.org/wiki/Recursive_Internetwork_Architecture |
| 11 comments | |
|
|
Mariano Guerra
2019-03-09 09:23 #
https://jods.mitpress.mit.edu/pub/issue3-negroponte by Nicholas Negroponte |
| 7 comments | |
|
|
nagle
2019-03-07 21:00 #
i have a lot of curiousity about the gender composition of this group ... anyone know? |
| 23 comments | |
|
|
Gregg Tavares
2019-03-07 20:41 #
I just read this article on APL http://vector.org.uk/art10011550 Anyone used APL? What's it like writing a file parser or a UI in APL? |
| 3 comments | |
|
|
Duncan Cragg
2019-03-07 01:56 #
Or don't, that's fine too .. :smile: |
|
|
Duncan Cragg
2019-03-06 09:11 #
Feel free to suggest new rows that are needed |
|
|
Duncan Cragg
2019-03-06 09:10 #
Hi, I created a spreadsheet following recent chat about things we have in common. You can compare your project with others. https://docs.google.com/spreadsheets/d/12sTu7RT-s_QlAupY1v-3… Feel free to add yourself and your work if you think this is useful :smile: @Steve Krouse is this the kind of thing you think may be useful to our group? |
| 24 comments | |
|
|
Jack
2019-03-06 05:47 #
Hey, in my @Donut # with @staffan Gabrielsson Berglof I was trying to recall an article / presentation given in the past 1-2 years by the creator of Inform (inform7.com) reflecting on natural language and programming languages, but now I can’t find the link. Does anyone know what I’m referring to? Edit: found it! Really good read: http://www.emshort.com/ifmu/inform.html |
| 4 comments | |
| # |
James Koppel
2019-03-05 10:28 #
@Steve Krouse What I said in my interview about the supply of most tools being 0 (from Latoza.& Myers 2010) |
| 4 comments | |
|
|
Ankur
2019-03-05 09:35 #
Random tangent I thought about at work today: what is the point of the executable bit on a file? Been using it for years, totally understand how it works, but I don’t think I know any of the history as to why that was a necessary permission to make explicit. Could we add more such bits to the world? “This file should never launch a process that can access the microphone / speaker / camera / internet / etc” |
| 4 comments | |
|
|
Iridian Kiiskinen
2019-03-05 06:42 #
Couple of meta-questions from a newcomer after skimming through the history of this channel (and https://futureofcoding.org/ - maybe this could be in the topic?). Context for the questions is an incongruence between our own startup and the apparent, somewhat abstract and academic focus of this community. I'm looking to understand what people look for in this community, what kind of meaning, what incentives keeps everyone here? Sharing of thoughts, obviously; but there are always the questions of personal careers, fame, money, status. All of those nasty cynical things yet which in the end make all the difference. Specifically, I'm looking for what could we (our company) give and what could we potentially look for; to figure out how it could be worth our time to engage deeply and not just lurk and absorb any ideas? I'll expand on the context a bit. On one hand the thing we're building ticks (very) many of the boxes people are looking for here. This is why I'm opening my mouth now, actually. On the other hand we already 'have found the answers' for great many practical questions. So I feel like I couldn't sincerely participate in the high-level discussions which are based on "let's try to figure things out together", because, well, we've figured many things out already, committed to them, and are now going through the phase of actually implementing the stuff. I'll pick one concrete, central example: our language is javascript, enchanced with a transparent ORM to a global workspace of shared resources - powerful, familiar, but offers absolutely no chance for fundamental language design innovation. This would basically rule us out the interests of any people here for whom new language design is The Thing, The Reason To Be Here; maybe because they have a language research oriented academic career, maybe because of personal aspirations; maybe because this channel originates from a discussion group whose identity is new language design. And this is just one example, there are a lot of other similar ones. So finally, the personal question: if I "can't" participate in discussions sincerely without being an advocate, and I "can't" just expect people to jump on-board of our existing train of answers, but I still genuinely believe we've what it takes to answer the core problems put forth here, what should I do? |
| 24 comments | |
| # |
Stefan Lesser
2019-03-05 06:37 #
Going through a bunch of old notes, I found this quick draft of an "ontology of visual programming paradigms" — how would you cut that space into distinct categories? |
| 3 comments | |
|
|
Kartik Agaram
2019-03-04 15:00 #
One alternative to an idea maze for sorting ourselves may be for each of us to list principles, so that we can build up some sort of adjacency matrix to figure out who overlaps most with us. Here's a list for myself I came up with after chatting with @Peter Abrahamsen last week, trying to be opinionated rather than bland: • Longevity over adoption. • Implementation matters. - Transparency over abstraction. - Minimize dependencies. No, really. - Minimize number of languages used. - Conciseness of language is secondary. • Rewarding curiosity about implementation should be a first-class design goal. - Doesn’t matter what the architecture is; can others tell what the architecture is? - Encode knowledge first about the outside. Environment/context over algorithms. (tests) - Encode knowledge in the repo. No other place to look at. “Don’t make me talk to you.” - Knowledge automatically complains when it goes out of date. (tests) - Keep it easy to update. (domain-independent traces over domain-specific immediate UIs) - Organize knowledge autobiographically, in a cleaned up version history. (layers) • Make it tractable to delete features. - Encourage more forks. • Don’t charge for software. Messes with long-term incentives. (Charging for hosting/operational services is ok.) Comments most appreciated. I also worry that I'm too verbose in my comments, so feel free to tell me that :slightly_smiling_face: |
| 13 comments | |
|
|
Kartik Agaram
2019-03-04 14:53 #
Just finished watching it (some opinionated notes at 1.551738.html…), and one thing it got me thinking about again is this "idea maze" for different potential paths to get "to" the future of programming that I've been noodling on for a couple of weeks (1.550105.html…). So some new ideas for questions to ask ourselves that may act as a "sorting hat" to get us collaborating with like-minded people: • Optimizing for learnability vs power once learned. There's lots of overlap between these categories, things that would work for either side, and that's ok. But what's your fundamental goal/intention? • Simple vs complex use-cases. (Jonathan Edwards refers to this in a couple of ways in the above interview. On the one hand, focusing on how people learn programming or new tools vs how experts use tools. There he prefers simple use cases. The experience of learning is anything but simple, but the programs beginners try to write are typically simpler than what experts try to do. On the other hand, Jonathan also draws a distinction between people supporting just "canned parameterizable components" and "full on programming". So his approach seems to be to go as simple as possible but not so simple that you lose the essence of programming. There may be other ways to slice this dimension.) • Adding new layers to the stack vs redoing existing layers. I suspect any new prototype has to start out building at the top, but is the intention to eventually burrow down? (It seems to be Jonathan's intention, though it wasn't really clear what the plan is to get there. Perhaps the attempts at creating new institutions fit here, hoping to inspire others to run with prototypes, retrofitting them back into existing stacks? I'm skeptical that existing power users can be relied upon to make truly deconstructive moves on a tool or layer that they're fluent with. The incentives don't work.) Anyway, that's a few more bends in the idea maze. I'd love for others to add to this list, going beyond this particular interview. (My previous comment linked above had 4 questions as well, with one point repeated here.) /cc @Jonathan Edwards @Peter Abrahamsen |
|
|
Corey Montella
2019-03-04 07:39 #
Is there a way to listen at 2x speed? |
| 2 comments | |
|
|
Jack
2019-03-04 06:58 #
Looking forward to listening! |
|
|
William Taysom
2019-03-04 06:45 #
Me too. Great job @Jonathan Edwards at being full and nuanced in articulating your perspective. Can't wait to try out Subtext Alpha. |
|
|
Edward de Jong
2019-03-04 01:21 #
where is the podcast with Jonathan Edwards? |
| 2 comments | |
|
|
Jake Brownson
2019-03-03 20:02 #
Just listened to the podcast w/ Jonathan Edwards, always found his work inspiring. great interview, thanks. |
| 1 comments | |
|
|
William Taysom
2019-03-03 03:53 #
It's a curious human trait that having understood a thing, it is difficult to remember the path toward understanding let alone to smooth it out for others. Why just the other day, I was asked to help revise an abstract. On the first reading, it was inscrutable. By the fifth, it was completely obvious. From there, I drew out a mind map, allowed some time for the memory of the original words, and then after three hours of reconstruction, I as pleased with story as casual as that funny thing you always tell your friends. All this for three damn paragraphs. |
|
|
William Taysom
2019-03-03 03:43 #
The Essence of Linear Algebra https://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab is uniquely beautiful piece of work – many other 3Blue1Brown videos are as well; however, one can argue that the Essence of Calculus https://www.youtube.com/playlist?list=PLZHQObOWTQDMsr9K-rj53DwVRMYO3t5Yr isn't quite as impressive, and I recall that Grant gave up on the Essence of Probability after a few months of trying. It's super simple is difficult even for one of the greatest math instructors of all time. |
|
|
Edward de Jong
2019-03-03 01:27 #
i remember asking my math professor, who was the chairman of the dept., and an absolute genius, about what did eigenvectors mean, and he was unable to explain it physically, yet the 3BlueBrown guy on the youtube did a lecture on it and really pushed it towards understandability. Really it is a skill beyond most teachers to know the more arcane subjects so well, and be able to explain it. Some things like imaginary exponents are really just conventions, and don't have a physical reality; you draw the symbols a certain way to mean an operation, but to have an intuitive grasp of e to the i power, that is sometimes just not available. Mathematicians are very good at accepting very arbitrary rules, as a kind of game. There is an awful lot of mathematics to know now, and it would take a lifetime to learn it, even with the best explanations. Mathematics is unlike any other science; it is purely additive, not subject to revision. Calculus didn't invalidate 2+2, unlike physics for example which when i was a kid said that the proton and neutron were indivisible, now they say they are both made up of 3 quarks, but that begs the question what is a quark made of? Hah. |
|
|
Gregg Tavares
2019-03-03 01:11 #
Can complex advanced math be made super simple? Could calculus, linear algebra , quaternions, eigan vectors, cross products, determinants, solving equations, etc be taught in hours instead of years? |
| 1 comments | |
|
|
Dan Cook
2019-03-02 11:04 #
I recently added some thoughts to a "Christopher Alexander" channel. But the channel is invite-only (oops!), so here it all is again in a thread (see replies) where it is discoverable. (Note: C.A. is the source of software Design Patterns, and inspired a whole software "Patterns" movement. This largely failed, but Agile came (in part) out of the aftermath) |
| 19 comments | |
|
|
Vladimir Gordeev
2019-03-01 22:32 #
Was thinking about @Shalabh's idea about abstracting away from DB We work with SQL table pretty much same way we would work with lists or sets locally. Find, select, filter, sort, insert. What if we split application in two distinct parts: 1) where we work with data, do business logic. We globally specify data structures we want to use (set, queue, stack, dict) and number of template requests that work with them. Then we just implement our business logic using these data structures. 2) where we configure storage for data structures defined in first part. This code takes info about used data structures and requests, statistics of use. It selects appropriate database engine (or may be several for different data structures) and generates schema that fits description given in 1). It should also be possible to manually specify desired database engine. The choice of database engines for different data structures is limited by how they are used. When description of used data structures is changed, then it may require migration in 2) This will greatly simplify programming. It reminds ORM, but taken on whole different level. |
| 11 comments | |
|
|
Jack
2019-03-01 04:48 #
Interview with the creator: http://cdm.link/2019/02/hydra-olivia-jack |
| 1 comments | |
|
|
Jack
2019-03-01 04:47 #
More examples: twitter.com/hydra_patterns The code interface is wonderfully concise, inspired by @alex’s tidalcycles and functional programming in general: github.com/ojack/hydra |
|
|
Jack
2019-03-01 04:47 #
Highly recommend folks to check out Hydra by Olivia Jack, a beautiful tool that turns shaders into an analogue video synthesizer (hit shuffle icon to change the pattern): https://hydra-editor.glitch.me/ |
|
|
Arthur Carabott
2019-03-01 03:50 #
good idea @Steve Krouse and good timing for me… |
|
|
Steve Krouse
2019-03-01 03:50 #
!channel I just created a #announcements channel. I'm happy to leave it relatively casual to start. Feel free to post if you are looking for work or looking to hire people. Of course, work related to these topics is preferred, but any paid work is acceptable. The only guideline is that you should probably only post about yourself or your company once every couple of months |
|
|
Shalabh
2019-02-28 11:24 #
https://www.proglangdesign.net/ |
| 2 comments | |
|
|
Mariano Guerra
2019-02-27 07:47 #
https://www.dragandbot.com/ |
|
|
Gregg Tavares
2019-02-27 03:38 #
This seemed exciting to me but maybe not quiet future of coding. TL;DR. Unity has built a compiler for a subset of C# that can generate very fast code https://blogs.unity3d.com/2019/02/26/on-dots-c-c/ |
| 6 comments | |
|
|
Edward de Jong
2019-02-26 17:29 #
I would be very interested to hear why Dark moved away from Elm to ReasonML as your front end development language. |
| 6 comments | |
|
|
Duncan Cragg
2019-02-26 13:03 #
hmm.. story of my life |
|
|
Duncan Cragg
2019-02-26 13:03 #
> A project that should take an hour actually takes weeks, because we spend all the time writing the same low-level distributed systems code again and again |
|
|
Paul Biggar
2019-02-26 12:07 #
folks, anyone interested in reading/giving feedback on a draft post about the design of darklang? |
| 7 comments | |
|
|
Jack
2019-02-26 10:11 #
This might be interesting to people here, in the sense of getting an idea of what it takes to “make big change” above and beyond mere technological proposals. Authors include Mark Guzdial & Barbara Ericson, both very well known in US CS Ed research/transformation. (I don’t necessarily personally agree that the right content / tools / mindsets are being scaled up mind you!) Fostering State-level Change In CS Education: The Expanding Computing Education Pathways Alliance https://dl.acm.org/citation.cfm?id=3293812 |
| 4 comments | |
|
|
Stefan Lesser
2019-02-26 07:09 #
The future of programming is… slow — Slow Technology. :-) http://www.becktench.com/blog/2019/2/11/some-reflections-on-slow-technology |
|
|
Mariano Guerra
2019-02-26 04:38 #
input and edition modes change |
|
|
Marcel Goethals
2019-02-26 04:36 #
I think this distinction doesn't make much sense. Text is a visual medium. Most "Visual" langauages still contain text. |
|
|
Mariano Guerra
2019-02-26 04:30 #
/poll "Do you think the future of programming is" "Visual" "Textual" "Other (specify in comments)" |
| 15 comments | |
|
|
Steve Krouse
2019-02-26 02:42 #
Yes, currently only I can create channels. If you want a new one, you can propose it in #administrivia and we'll discuss it |
| 1 comments | |
|
|
Peter Abrahamsen
2019-02-25 21:26 #
That said, they’re free. |
| 1 comments | |
|
|
Peter Abrahamsen
2019-02-25 21:26 #
I think permission to create public channels is controlled by the admin of the Slack. I don’t remember many (any?) entire conversations focused on Christopher Alexander in the past, so it feels premature to make a channel for it. |
| 1 comments | |
|
|
Dan Cook
2019-02-25 21:19 #
I just created a Christopher Alexander channel. I'm new to slack ... it looks like custom channels are private, and I need to invite anyone who'd like to join (anyone?), rather than having it be discoverable? |
|
|
Mariano Guerra
2019-02-25 13:56 #
I think this fits in this channel: 1) What applications do you use that use drag and drop in an interesting way? 2) same question but web apps 3) same question but on mobile native 4) same but on mobile web 5) for mobile native but touch gestures 6) same as 5 but for mobile web |
| 14 comments | |
|
|
Dan Cook
2019-02-25 12:29 #
Anyone exploring visualization of code/data (e.g. versus textual source code) should take a look at BV's "Magic Ink": http://worrydream.com/MagicInk (For the "short version", just look at all the diagrams, and read the surrounding text to see what he's doing with each one) It's about determining what a person is trying to find out from (or "questions" one has about) the data being presented (by a webpage, document, or program), and presenting it in such a way that the answers are immediately obvious at a glance. In other words, showing the data is good, but it's only the first step to making that data consumable / workable. He makes a strong case that a lot of "interactive" software would actually serve its purpose much better as a (dynamic) visualization. |
| 1 comments | |
|
|
David Piepgrass
2019-02-24 12:10 #
@Will Crichton "How does your particular decomposition of the compiler compare to other approaches like Roslyn?" I started Enhanced C# back when Roslyn was "shared source" - you could see the code but not contribute. Roslyn inspired me - I took the "red and green tree" idea (later discarding the red tree as green trees are usually enough), and like Roslyn, my Loyc Syntax library has a universal Token format which is a tuple of (token type, start, end, value reference). Unlike Roslyn, • I've only tackled the syntax side of things in code (LLLPG and LeMP are preprocessors, not full compilers) while Roslyn includes full compilers. (Rest assured, I want to go far beyond syntax, but taking the time to get things right is more important.) • I created a common interface, IParsingService, supported by all three languages (EC#, LESv2, LESv3), which decomposes parsing into lexing and parsing stages. (Roslyn probably has something similar, but it's probably less generalized.) • Roslyn encodes detailed information down to the level of each character in a source file, i.e. it preserves the "parse tree", whereas my design only keeps the "abstract" syntax tree. It can recreate a semantically identical program from a Loyc tree, but cannot actually reproduce the original code. • I wrote a universal algorithm for associating comments and line breaks with syntax subtrees. The EC# and LES parsers are unaware of comments; after parsing they simply invoke the algorithm to merge the previously "discarded" comments into the final syntax tree. • Roslyn has far more manpower and so can afford to more specialization. I use the universal token type directly in my three parsers instead of specializing. And I built everything out of Loyc trees rather than having specialized per-language trees. (This choice is useful and convenient in some ways and suboptimal in other ways; in future languages, I would introduce Loyc-tree wrappers or specialized syntax trees that implement ILNode). • Roslyn is designed specifically for .NET, whereas I chose .NET because it seemed to me like the least-bad choice available (and probably still is.) So much as I'm invested in .NET, I want ports to other languages, I just don't really have time to do them. • (Added) Enhanced C# is a dramatically different design than C# itself. While it supports the same syntax (except C# 7 due to factors such as a lack of time), it also supports a bunch of additional syntax. Due to these design (and non-design) differences, Roslyn's C# parser is over 10,000 lines, but mine is about 2,000 lines of code. • (Added) Roslyn is long-winded - A SimpleMemberAccessExpression doesn't seem so simple when you give it a name like that! Loyc relies on... what do you call it when your code/data looks like what it represents? I mean, not only is the addition operator called '+, but its native textual representation is like x + y. I shake my head every time somebody creates a system that doesn't work somewhat like this (admittedly Loyc.Syntax.CodeSymbols defines an English name for each operator, due to limitations of C#.) By contrast, Roslyn defines BinaryExpressionSyntax nodes where node.IsKind(SyntaxKind.PlusToken)is true, or something like that. • (Added) C# and VB are statement-based, whereas EC# is expression-based, and Loyc trees don't distinguish expressions from statements. In summary, Roslyn has much broader capabilities, as you'd expect a big team can do, but it shares less code between its compilers... and is long-winded. |
|
|
David Piepgrass
2019-02-24 11:43 #
@Kartik Agaram (branching my thread from #introduce-yourself) Can you offer examples of "existing languages [being] highly constrained in their degrees of freedom"? I usually find human language alone inadequate to discuss these matters, so I need to see specific examples. But yeah, we need to see programming language design itself as a multi-layered thing; indeed I see my task as helping to architect an entire ecosystem of languages. Decomposing a compiler and its standard libraries into many parts is insufficient, because you're still viewing it as one language (really two languages, the language being compiled and the implementation language - the implementation language shouldn't be that important, but without interoperability, it is). It's wasteful to design a new standard library for every new language, wasteful not to share common parts between languages, and in addition I think a big reason interoperability is hard is because we haven't learned how to share these things. (Interestingly, I hold to a "waste not, want not" philosophy in everyday life, as in PL design.) I created LES and Loyc trees in that spirit. Because they are so general, they have disadvantages as syntax trees - they are not specialized for your specific circumstances and aren't suitable in all situations.* Yet because it was designed for all programming languages, it avoids common impedance-mismatches - for example e.g. most languages disagree about what "identifiers" and "literals" are, but LESv3 says "anything goes" so it is naturally compatible with everything. I think every compiler could find a use for these without the usual impedence mismatches you'd usually suffer when crossing language boundaries. Regardless of the syntax or semantics of your language, you can use LES as a text format to express internal compiler data structures, or accept it as an input format so users can combine your language with preprocessors like LeMP. (* Note that you could, though, generate wrapper types to wrap Loyc trees in a language-specific manner, or implement an interface like ILNode so that although your syntax trees aren't Loyc trees, they can be consumed as if they were.) |
| 2 comments | |
|
|
Joe Trellick
2019-02-24 10:14 #
I finally listened to and enjoyed that Ted Nelson talk that @Daniel Garcia shared a while back: https://www.youtube.com/watch?v=JN1IBkAcJ1E I don’t feel it’s so useful in terms of ideas, but it’s a fascinating portrait of a visionary who hasn’t succeeded in bringing his ideas into the world during his travels through a very interesting part of history. While he’s still obviously stubborn, he came across as more charming than I remembered, then I laughed out loud when he hung a lantern on it and said he’d finally taken Dale Carnegie to heart |
| 1 comments | |
|
|
Jack
2019-02-22 01:52 #
I have a query about something that is out of my comfort zone, so the question itself might not be right, but here goes. I have a friend who has found a way to live code the Reaktor Core audio DSP language, such that they can do things like programmatically change connections in the audio graph. This led to the idea of live coding the audio graph itself as a potentially musical activity, for example scheduling a sequence of graph transformations, or sequencing the opening and closing of connections between nodes. The (potentially malformed) question is: what techniques might be useful to take inspiration from for an idea like this? Any papers or libraries that would be worth a look? I assume the relevant domain would be graph theory..? Thanks in advance |
| 20 comments | |
|
|
Vladimir Gordeev
2019-02-21 07:39 #
I realized what kind of problem I look for: something that involves IO. |
| 3 comments | |
|
|
Mariano Guerra
2019-02-21 07:15 #
:stuck_out_tongue: |
|
|
Mariano Guerra
2019-02-21 07:15 #
• not a compiler • not a query to find ancestors in a family • not Fibonacci • not shape inheritance |
| 7 comments | |
|
|
Vladimir Gordeev
2019-02-21 07:08 #
When you design a programming language it's important to ensure that it is convenient. Seems like the best way to do it is to write a program in this imaginary language. What are good problems to try out with this imaginary language? any other suggestions? |
| 34 comments | |
|
|
Kartik Agaram
2019-02-19 10:01 #
https://github.com/Bogdan-Lyashenko/codecrumbs/blob/master/README.md > Have you ever got lost in a big or unknown codebase? This tool will help you to solve that. Also, it will increase your development speed and give more knowledge about your application architecture. > > How it works: You run codecrumbs command for a codebase, it analyzes source code and builds its visual representation. Write down a codecrumb-comment and codebase state will be reflected by visual client in browser on the fly. |
| 8 comments | |
|
|
Katerina solstad
2019-02-18 15:59 #
Here is an idea explaining the algorithm for linked list. Group of people, a robe in a length of exactly 20 feet. The road. The tree at the end of the road. How can someone from the group to go towards the tree and stop exactly 20 feet from it? Exercise at first might have an idea to go all away to the tree, place the robe there that measure the distance and the other end of the road will be the place to stop. Modification for more optimal decision would be two people holding a robe and walking towards the tree with a robe between them. Once the leading person gets to the tree, the one behind is standing where we wanted to be. Just came to me as possible way to explain. So not know how useful it is but things like that can be taught to children at early age. |
| 2 comments | |
|
|
Edward de Jong
2019-02-16 00:44 #
well i live in oakland so i will definitely meet up. |
|
|
Steve Krouse
2019-02-16 00:43 #
!everyone I just created the #in-san-francisco channel. I'm a bit confused why we don't have one already. Please join if that's where you live. I'm visiting in March and organizing a meetup (possibly at Dynamicland!!!) which is why I wanted the channel to exist |
| 2 comments | |
|
|
Tim Swast
2019-02-15 18:52 #
Is there a natural boundary for what we expect "non-IT people" to know? https://m-cacm.acm.org/blogs/blog-cacm/231489-tech-user-responsibility/fulltext |
| 7 comments | |
|
|
Kartik Agaram
2019-02-15 14:37 #
Just as a gut check: does everybody here subscribe to the following? > The Perfect World > > • All users write their own code > • We can use reflection to code unanticipated scenarios > • Local reflection happens in real time in response to outside world events > • Self-organization is the order of the day (From https://www.infoq.com/presentations/Reflection-OOP-Social; thanks @Dan Cook: 1.550261.html…) |
| 15 comments | |
|
|
Felix Kohlgrüber
2019-02-14 23:51 #
I found Laurence Tratt's blog yesterday and enjoyed reading a couple of posts. Most posts seem relevant to this group, so feel free to check them out: https://tratt.net/laurie/blog/archive.html |
| 1 comments | |
|
|
Peter Abrahamsen
2019-02-14 11:21 #
You might be particularly interested in studies and surveys of how people do intellectual work through Twitter (which academics refer to as “social media”), forums, collaborative document editing, email, shared whiteboards, teleconferencing/videoconferencing, and so forth. For example, Kate Starbird has done a lot of work around large-scale information gathering, as well as disinformation, through Twitter in response to crises. |
|
|
Peter Abrahamsen
2019-02-14 11:13 #
I think there’s plenty of useful academic research from communities like UIST, PPIG, and CSCW. Some of it may seem silly or impractical, but even if it is, there’s something valuable in seeing how they conceptualize problems, in the language they’ve developed, and in their techniques — even if you think they’re fundamentally flawed. |
|
|
Duncan Woods
2019-02-14 01:46 #
I see collaboration as either i) two players trying to kick the same ball at the same time ii) one playing a striker and the other a goal keeper. In practical terms, collaboration is usually like ii). It's solving how to get the most people working independently yet towards the same goal. Combining different talents at different tasks has more examples in the world than generalists working on the same thing at the same time together. I suspect that at the micro-scale, creative tasks like design and decision-making can only be single-threaded because they are grown iteratively using an OODA style loop. You have to go up in scale and create larger independent tasks to parallelise them across multiple people each with their own OODA loop. You can have a team OODA loop with researchers, engineers and reviewers performing different roles within a loop which is a different slicing of macro scale work to enable independent work but it would be a productivity disaster on small scale work. An analogy for collaboration more like i) is how a stone can be too heavy for any one person to lift, but a team can lift it together. It is a single indivisible task beyond any individuals capacity. Are there creative tasks that are indivisible that we can't do without a team lifting together? Don't know. Design is effectively a global optimization problem where you need a single goal-function and the power to change any/all parameters of the design. IMHO this is why great design often comes out of only a single person's mind which is why people like Woz tell people to work alone: > Most inventors and engineers I’ve met are like me — they’re shy and they live in their heads. They’re almost like artists. In fact, the very best of them are artists. And artists work best alone — best outside of corporate environments, best where they can control an invention’s design without a lot of other people designing it for marketing or some other committee. I don’t believe anything really revolutionary has ever been invented by committee… I’m going to give you some advice that might be hard to take. That advice is: Work alone… Not on a committee. Not on a team.” |
| 1 comments | |
|
|
William Taysom
2019-02-14 00:51 #
Might be my limited experience, but shy of music and sport, professional programming is the most collaborative thing I've done. With research, it's trickier to get the team into the same mindset, but that's usually because the mind is not set. I mean each researcher is individually foggy on the details and their consequences. Of course, trying to explain yourself quickly reveals just how confused you are. So that's a bonus. |
| 1 comments | |
|
|
Vladimir Gordeev
2019-02-14 00:19 #
I'm trying to understand how people collaborate, do intellectual work together. Today programming is very personal, I'm trying to find ways to make it more collaborative, more efficient. Do you have any examples in mind where people do engineering or intellectual work in collaborative manner? I'm trying to find examples in real world for inspiration. As far as I understand, in academia people often divide work to independent parts and each author does his part. Also authors review the whole thing, correct each other. Pretty much like in today programming (feature branch, code review). Any other examples of intellectual collaborative work? Collaborative engineering? |
|
|
Peter Abrahamsen
2019-02-13 12:50 #
Which is to say, yes, that’s a fertile starting point for a conversation :slightly_smiling_face: |
|
|
Peter Abrahamsen
2019-02-13 12:49 #
Thanks for that post. Which decisions are most discriminating for us, or would pair us up most productively? Who you take money from? Who you’re trying to serve? Pragmatic incrementalism vs shooting the moon? |
| 1 comments | |
|
|
Kartik Agaram
2019-02-13 12:31 #
Hmm, I wonder if pairwise conversations would be more useful if we first collaborate on an “idea maze”. (http://cdixon.org/2013/08/04/the-idea-maze, but I think it’s helpful to more than just startups.) That way we may choose to talk to people who answer the same way on certain questions, or who have gone the opposite way on some other question that we’re now starting to second-guess ourselves on. And at the very least it may provide a more fertile starting point for conversations. |
|
|
Peter Abrahamsen
2019-02-13 12:15 #
Or, to commiserate with other people struggling to get things off the ground; to condense all our hopes and dreams into a vision; to find and take the first steps. |
|
|
Peter Abrahamsen
2019-02-13 12:14 #
Well, my collaborator and I have a pilot project, and I’d very much appreciate feedback on strategy, especially from people with real-world experience. |
|
|
Kartik Agaram
2019-02-13 11:59 #
Yeah, in general I’ve been feeling a bit frustrated with this group because there’s disproportionate interest in prototypes rather than moving from prototype to “pilot project”. Doing that requires thinking about not just the narrow technical issues but the social and cultural context in which technical decisions are made. Right now this group doesn’t feel like it’s about the “future of programming”. It feels more about “ideas that may be the future of programming, if somebody else puts in a whole bunch of other work.” (I have similar complaints with academia in general.) I sense that some people here are working on more mature projects and startups that I’m sure think about these angles. But the group isn’t fostering such collaboration. I shared these thoughts with @Steve Krouse last week, and one idea he had was to create a new channel. But I haven’t ~had time to~ come up with a crisp boundary for it yet. Might as well open it up and ask others for ideas. |
| 14 comments | |
|
|
Peter Abrahamsen
2019-02-13 11:48 #
We on this slack are very motivated by the ideas and vision, sometimes singularly so. That’s a liability. |
|
|
Peter Abrahamsen
2019-02-13 11:04 #
We all have good ideas, and many of them converge or seem cough synergistic. The problem for us is predominantly in figuring out the right environment and strategy for letting them grow. Politics, positioning, and aesthetics matter. Attitude matters—especially humility and patience, without losing the ambition to chase the big ideas. Money matters: who you take it from and when. Resourcing matters: skills in design, CS, user research, marketing, business, etc; and creating an intellectual environment with the right size and balance to learn deeply what most needs learning. |
|
|
Peter Abrahamsen
2019-02-13 10:52 #
> It might seem that the “escape” would be to create some tool (or language, etc.) to improve software/programming, and then remake the tool using the tool itself. However, this standard definition of “bootstrapping” does nothing to break free from the limited context of the tool. Right. The power of bootstrapping is the tight feedback cycle and.. intimacy. The cost is not getting to learn from real world priorities and constraints, losing sight of a user who is not you. If you’re trying to change the nature of programming, if you want it to be more democratic, accessible, and cheap, who are your users? Are they still programming professionals? How general purpose can your tool really be? And how can you build it in a way that’s tight with (learns from, is accountable to) the target users? These aren’t the 1980's. You can’t create the ability to put numbers in boxes and have the whole world sing your praises because the alternative is paper. The environment now is far more complex. The real benefits of what we (each) want to build will come only with time and investment by a user community. |
|
|
Marcel Goethals
2019-02-13 09:22 #
Does anyone have any good sources on practical techniques for implementing a type system? |
| 4 comments | |
|
|
Dan Cook
2019-02-11 21:32 #
I just watched a demo (link below) of the Glamorous Toolkit, and I love what I'm seeing! The philosophy is using an IDE that is completely moldable to the thing being developed ("system oriented" vs "language oriented"), and full integration between code, documentation, tests, etc. Kudos to @Tudor Girba for creating it! I hope it does a lot to change the way people think about software. https://youtu.be/o5VEoKEUx9A |
| 2 comments | |
|
|
Cole Lawrence
2019-02-08 08:44 #
I’m currently designing a protocol which captures intent, knowledge, and context for each fact entered into a relational database, but I’m not satisfied with my vocabulary for describing what is actually important in the sense of (tracking) credibility of entries and observations made by different actors. I’m thinking about domains of control/permission and authority over subject matters, but am struggling with language. Would anyone recommend any specific materials, projects, or papers that talk towards these topics? |
| 5 comments | |
|
|
Mariano Guerra
2019-02-08 01:26 #
There were a couple of threads talking about a general purpose AST, here's a short paper on that: https://cs.wellesley.edu//~blocksplus/2018/pdfs/blocksplus18-paper21.pdf "Building an Accessible Block Environment Multi-Language, Fully-Accessible AST-based Editing in the Browser" (maybe I got the paper from here, not sure, I found the tab open :smile:) |
| 8 comments | |
|
|
Vladimir Gordeev
2019-02-07 23:51 #
Here is one-on-one talk between me and @Duncan Woods discussed: https://youtu.be/UagX5ssqaVM |
| 3 comments | |
|
|
Edward de Jong
2019-02-07 11:28 #
It is not possible in the general case to go 100% backwards from a change in the AST. You can't fully reconstruct source from the compiled code, but you can get close. But we are talking exactitudes, so unless your language is visual to begin with, in which case the AST is identical to the source, this won't be happening. |
| 7 comments | |
|
|
Mariano Guerra
2019-02-06 03:38 #
For the functionally inclined in the room: "A Real-World Application with a Comonadic User Interface" https://arthurxavierx.github.io/RealWorldAppComonadicUI.pdf |
|
|
Mariano Guerra
2019-02-06 01:10 #
Maybe we can create a channel here, or just inform on the #share-your-work channel when such post is submited |
|
|
Mariano Guerra
2019-02-06 01:10 #
I have a proposal to make, since part of changing the present of coding is showing alternatives and visions to the biggest audience possible, I would like to know when someone posts something on reddit, HN or similar so I can upvote it and maybe move the conversation to those platforms to the specific topic at hand, that will create more visibility and an encapsulated discussion per topic (which will have the benefit of being permanent and accesible to search engines). You don't have to upvote everything proposed, just what you think adds something to the future of coding. |
| 10 comments | |
|
|
Kartik Agaram
2019-02-05 21:41 #
This is really great @Andrew Reece. Extremely high idea density. Anybody have pointers to other descriptions of Christopher Alexander's notion of unfolding? Is there more to it than not trying to "encapsulate" low-level details away? (This question is why I didn't want to hide this response away in a sub-thread.) |
| 15 comments | |
|
|
Andrew Reece
2019-02-05 13:17 #
Some of the strengths and (common) weaknesses of declarative programming: https://www.toptal.com/software/declarative-programming |
| 11 comments | |
|
|
Steve Krouse
2019-02-05 01:10 #
You beat me to it @Shalabh... But just wanted to say congrats to @Jamie Brandon and Kevin Lynagh for Reltron, their new prototype to explore SQL. https://kevinlynagh.com/reltron/ It reminds me of Looker (where I used to work and now @Chris Granger works) but has a fresh take on a few things such as nested join discoverability and incredibly fast live data loading |
| 4 comments | |
|
|
Daniel Garcia
2019-02-04 21:03 #
Last talk by Rich Hickey. Do you agree with what he considers downsides of Maybe and Either? https://youtu.be/YR5WdGrpoug |
| 4 comments | |
|
|
Shalabh
2019-02-04 17:32 #
An "attempt at rethinking computation". I haven't read it all, but much interesting stuff http://natecull.org/wordpress/dataspace/ |
| 6 comments | |
|
|
Shalabh
2019-02-04 16:11 #
https://kevinlynagh.com/reltron/ |
| 4 comments | |
|
|
Jack
2019-02-04 08:00 #
And if you are so inclined here is a promotional tweet to endorse :stuck_out_tongue: https://twitter.com/lildata/status/1092057035649232896 |
|
|
Jack
2019-02-04 07:56 #
Hi folks (and sub-hi to #in-london folks), On February 15th, TOPLAP.org is celebrating it’s 15th birthday. What is TOPLAP, you may ask? Why, it is of course the “Temporary Organisation for the Promotion of Live Algorithm Programming” (http://art.runme.org/1107861145-2780-0/livecoding.pdf). To celebrate, there will be 84+ hours of music and visual arts live streamed from all around the world: https://toplap.org/wearefifteen For #in-london people, you can attend one of these ‘Algoraves’ (algorave.com) at Goldsmiths University of London, in their Sonics Interactive Media Labs (SIML) venue with 12.2 multichannel sound and 4 HD projectors: https://www.facebook.com/events/2376936255659827/ If you were to attend such an event, you would witness semi-improvised artistic performances using live programming environments in languages such as C, SuperCollider, Haskell, JavaScript and more. Here’s to 15 years of TOPLAP and many more ahead! |
|
|
Vladimir Gordeev
2019-02-03 23:21 #
Such a good idea of folder UI. @Felix Kohlgrüber remember we were discussing something similar? https://twitter.com/Westoncb/status/1092320097937645570 |
| 4 comments | |
|
|
Shalabh
2019-02-03 10:22 #
Welcome @Peter van Hardenberg - came across this nice 'design language' model from ink & switch recently: https://www.inkandswitch.com/capstone-manuscript-appendices.… |
| 2 comments | |
|
|
Tim Swast
2019-02-02 14:21 #
Something that's been bothering me in the podcast is the problem of having a single notation to represent expressions. The reason it has been bothering me, is that I suspect it's something that would have an impossibility proof. Indeed it does. https://en.m.wikipedia.org/wiki/Richardson%27s_theorem |
| 11 comments | |
|
|
Ivan Reese
2019-02-02 12:54 #
Anybody familiar with the Behavioral Programming idea introduced by David Harel circa 2012? • Here's David's website: http://www.wisdom.weizmann.ac.il/~harel/ • Here's the ACM article introducing the idea: http://www.wisdom.weizmann.ac.il/~harel/papers/Behavioral%20programming%20.pdf • Here's a paper on using BP for animation (which is what I'm interested in in particular): http://www.wisdom.weizmann.ac.il/~harel/papers/BP_Animation.pdf I'm curious if anyone has encountered this work before and could give a quick summary of the idea from your perspective, if it's related to anything else, and just.. broadly, what you think of it. Is it the good shit? Worth reading the lit? Just a bit? Other words that rhyme with it? |
| 20 comments | |
|
|
Ivan Reese
2019-02-02 12:48 #
His recent youtube videos have been pretty delightful. |
| 1 comments | |
|
|
Laura
2019-02-02 03:54 #
His authenticity is inspiring |
|
|
Laura
2019-02-02 03:54 #
I love Ted |
|
|
Edward de Jong
2019-02-01 22:29 #
nice interview. He was a real pioneer and visionary. So far ahead of his time, he couldn't connect with the commercial teams around him. |
|
|
Daniel Garcia
2019-02-01 21:53 #
New episode released from Notion's series Tools & Craft with Ted Nelson https://www.youtube.com/watch?v=JN1IBkAcJ1E |
|
|
Steve Krouse
2019-02-01 12:15 #
urbit.org/primer looks amazing! Seems like they made a lot of progress since the last I checked |
| 14 comments | |
|
|
Edward de Jong
2019-02-01 00:16 #
I just came across another dead body in graveyard of new languages; called SKIP, developed at facebook by a formidable team from 2015 to 2018. It is reported as being carried on by its main designer Julien Verlaguet. I haven't had a chance to review it yet to see what it added to the mix, but it was another substantial effort like Eve, and anyone working on their own project, should at least glance over and see what happened to other teams. Facebook is notoriously fickle about projects and products; they are a dictatorship, and subject to whims of the management. |
| 3 comments | |
| # |
Daniel Garcia
2019-01-31 16:20 #
Just found a dataflow like diagram for a cooking recipe. Looks cool (source https://arxiv.org/pdf/1803.05316.pdf) |
| 6 comments | |
|
|
Stefan Lesser
2019-01-31 05:18 #
Are there any techniques or metrics to define or measure how specific or generic something is? That something could be a function or class in a programming language, an algorithm, or even something less formally defined, like a component in a UI framework. I'm familiar with some measures of complexity, like counting dependencies or cyclomatic complexity, which seems somewhat related. Appreciate any pointers to papers or articles about this, even if they "just" define how something is more or less specific or generic than something else to support a hypothesis that is totally unrelated. |
| 16 comments | |
|
|
Kartik Agaram
2019-01-29 23:23 #
Yet another "Awesome" list: https://github.com/hypotext/notation |
| 1 comments | |
|
|
Stephen Sugden
2019-01-29 23:22 #
Not sure if it was shared here yet, but this blog post and the statebox.org "monograph" are quite interesting. https://blog.statebox.org/why-visual-programming-doesnt-suck-2c1ece2a414e |
|
|
Daniel Garcia
2019-01-29 20:41 #
This seems like a different approach to VPL, I found the beginning of the talk boring and the presenter might not now enough from Data Flow VPL. But his approach is different to all the VPL's that I have seen. You can start at min. 12 with the following link if you want to avoid the introduction https://youtu.be/edQyRJyVsUg?t=716 |
| 54 comments | |
|
|
Kartik Agaram
2019-01-28 17:05 #
A language at the intersection of literate programming, stack programming, and visual programming https://hackernoon.com/kaukatcr-an-experiment-in-language-de… |
| 7 comments | |
|
|
Marcel Goethals
2019-01-28 08:27 #
Since we're all such fanboys of the likes of Bret Victor, Alan Kay, Engelbart etc, etc... Are there any interesting critiques out there of these kind of ideas? |
| 12 comments | |
|
|
Nikolas Martens
2019-01-28 06:54 #
Does anybody here know of any research on how effective programming is at improving maths or physics skills for school children? My hypothesis is that applying maths and physics knowledge in programming projects should increase motivation which should increase test performance. Any thoughts on that? What's your experience? |
| 22 comments | |
|
|
Nick Nikolov
2019-01-28 06:45 #
https://medium.com/@rrhoover/the-rise-of-no-code-e733d7c0944d |
|
|
Stathis Sideris
2019-01-28 05:50 #
I think that programming should feel like gaming |
| 18 comments | |
|
|
Gregor
2019-01-28 04:10 #
What's your favorite on-boarding experience in any code editor (in the widest sense of the word)? |
| 7 comments | |
|
|
Felix Kohlgrüber
2019-01-28 04:06 #
"Software-related objects are usually represented as groups of text files in a variety of languages, both informal and formal. The links in this network [...] are largely informal and implicit [...]. The programmer typically analyzes and modifies these objects using file-based tools - text editors, string searches, etc. Hence, software testers must map their conceptual universe, a complex network of structured objects, onto a hierarchical file system and use file-based utilities to pursue the conceptual links. The structure mismatch between the conceptual model and the file representation makes it extremely time-consuming to answer even simple questions like "who last modified this function" or "where are the test cases for this program". Overall, the problems are similar to what would be encountered trying to use a bitmap editor like MacPaint as a CAD tool - an array of bits holds all the information, but the information cannot readily be extracted by automated tools." Kotik et. al. in "Automating software analysis and testing using a program transformation system", 1989 |
| 1 comments | |
|
|
Vladimir Gordeev
2019-01-28 03:34 #
Yesterday @Felix Kohlgrüber and I @Vladimir Gordeev had one-on-one talk about Future of Programming topics. I hope someone gonna find it interesting. Topics mentioned: https://youtu.be/YWk72svnEG8 |
| 5 comments | |
|
|
Steve Krouse
2019-01-28 03:31 #
Hey !everyone! If you're looking to meet people in this Slack 1-on-1, your prayers have been answered! Join the # channel to be randomly paired for a chat by the@Donut bot every 4th Monday with someone else from this group. You can opt in or out by joining or leaving #. Thanks @Felix Kohlgrüber @Aidan Cunniffe @Dev Doshi for the suggestions! |
|
|
Dev Doshi
2019-01-27 20:15 #
Or we can set up mattermost or whatever |
|
|
Dev Doshi
2019-01-27 20:13 #
How much would it cost per month? I'm down to chip in |
| 1 comments | |
|
|
Vladimir Gordeev
2019-01-27 12:44 #
I got notification that this Slack approaches 10k messages and soon won't be able to search for older messages. @Steve Krouse may I ask you to export messages? It must be somewhere in admin panel. https://get.slack.help/hc/en-us/articles/201658943-Export-your-workspace-data |
| 13 comments | |
|
|
Nick Nikolov
2019-01-26 16:14 #
dunno if that makes sense to people |
| 4 comments | |
|
|
Nick Nikolov
2019-01-26 16:14 #
steve’s website is currently that but it’s somewhat personal to his research, there’s no wiki for the community aspect in a way |
|
|
Nick Nikolov
2019-01-26 16:13 #
e.g. most reddits have an incredibly valuable wiki with the must read references collected + best of threads and so on |
|
|
Nick Nikolov
2019-01-26 16:12 #
here’s another thing. i wish we could save/extract all the amazing references+links+books and so on that are talked about somehow.. the discussion are always amazing but hard and time consuming to chase everything down… though organising all the information is no easy feat either |
| 1 comments | |
|
|
Aidan Cunniffe
2019-01-26 16:05 #
@Felix Kohlgrüber your post gave me an idea. What if we tried to organize 1:1 chats -- random matchmaker style? So every 2 weeks a group of people are paired up to have 1:1 chats with each other about their projects or perspectives. I feel like something like that would really help everyone involved generate new ideas and benefit from other people's perspectives. Interested anyone? If so I'm happy to help organize |
| 9 comments | |
|
|
Felix Kohlgrüber
2019-01-26 11:05 #
After last week's online meetup, I'd be really interested in having more video chat conversations with you guys. I don't have plans for Sunday afternoon (Europe time) yet and if someone's up for another experiment, I'd like to have a one-on-one discussion with that person. I'm open to all kinds of topics and since I'm not working on anything in particular right now, I'd be happy to hear what others are working on / thinking about. Please comment below or PM me if you're interested :wink: |
| 6 comments | |
|
|
Andrew Reece
2019-01-26 03:44 #
A stream by Casey Muratori showing an internal debugging/program exploration tool he made. The whole thing is long (and worth watching if you're interested), but if you watch for a couple of minutes from the time linked (49:13) you'll get a decent idea of what he's doing: https://youtu.be/msZa2EzI3zc?t=2953 |
| 4 comments | |
|
|
Zubair Quraishi
2019-01-25 21:18 #
Hi all. My interest is with old systems, to see if they are still relavant today. I would be interested to see if people think that drag and drop GUI builders are the future for the next 5 years, or is there a different paradigm, like Dynamic Land that will take over in the immediate future. |
| 5 comments | |
|
|
Tom Lieber
2019-01-25 16:21 #
:joy: That happens. |
|
|
Laura
2019-01-25 16:19 #
I think subconsciously, unravel was actually the original inspiration for what I wanted to make :sweat_smile: |
|
|
Laura
2019-01-25 16:18 #
Uhhh... thinking of it |
|
|
Laura
2019-01-25 16:18 #
I'll skim it and see if it can give me some hints for direction |
|
|
Laura
2019-01-25 16:18 #
Really cool to see unravel mentioned, I've read that paper before |
|
|
Laura
2019-01-25 16:17 #
Was a typo |
| 1 comments | |
|
|
Laura
2019-01-25 16:17 #
Sorry, that yea was not aimed at you @Tom Lieber |
|
|
Laura
2019-01-25 16:00 #
yea |
|
|
Tom Lieber
2019-01-25 15:26 #
@Laura http://users.eecs.northwestern.edu/~jjh380/pdf/Unravel-UIST-2015.pdf implements it, but it was at least partially based on my instrumentation library, which only supports browser JavaScript and Node atm. |
|
|
Laura
2019-01-25 15:03 #
Like if your codebase is 20k files of php, say 1k LOC per file on average, (overestimate), that's 20,000,000 potential LOC mutations without any intelligent guidance |
|
|
Laura
2019-01-25 15:02 #
But I think that's waaaaayyyyyyyyyyyyyyyyyy too complicated |
| 189 comments | |
|
|
Laura
2019-01-25 15:01 #
To automate it |
|
|
Laura
2019-01-25 15:01 #
that was my idea |
|
|
Laura
2019-01-25 15:01 #
and you create a program that implements approximately this algorithm:
|
|
|
Stathis Sideris
2019-01-25 15:00 #
@Laura I’ve done some work towards this sort of thing in Clojure. What you’re essentially describing is a combination of static analysis (for the “show me all things that contribute to this result” part) and tracing (for replay of values that flowed through) |
| 14 comments | |
|
|
Laura
2019-01-25 14:57 #
If you can replay an program invocation |
|
|
Laura
2019-01-25 14:57 #
I was thinking of something like |
|
|
Laura
2019-01-25 14:57 #
Yeah that |
|
|
Cole Lawrence
2019-01-25 14:56 #
Oh, I didn’t focus on the you will be presented by all the code that had a causal influence on that piece of output part of your idea. Yeah, that is much more interesting |
|
|
Laura
2019-01-25 14:56 #
But it's not enough, your approach is similar |
|
|
Laura
2019-01-25 14:56 #
Similar to that |
|
|
Laura
2019-01-25 14:56 #
I've already built something kinda useful for our team, we have a custom in-house php framework, and I already added something similar to that, we use a component system, and I made an extension to take me to the source file for any given selected component |
|
|
Cole Lawrence
2019-01-25 14:54 #
I’ve built chrome extensions in the past which could pull out interesting attributes in an HTML file by right clicking them… So, you could right click an element and be presented with it’s classname btn--blue45 legacy-btn Then, at least you can simply search all of the codebase for btn--blue45 legacy-btn and only need to look at a few files |
|
|
Laura
2019-01-25 14:52 #
I can think of one mechanism to build something like this, but I think it's waaayyy too difficult and perhaps there may be an easier way |
|
|
Laura
2019-01-25 14:51 #
Ie, hold down the alt-key, hover over an element in the web-application, and you will be presented by all the code that had a causal influence on that piece of output |
|
|
Laura
2019-01-25 14:50 #
Buutt.. As Bret demoed in Inventing on Principle, you could theoretically map output to its location in the codebase |
|
|
Laura
2019-01-25 14:50 #
Which is very wasteful, boring and frustrating :c |
|
|
Laura
2019-01-25 14:49 #
I'm losing a lot of time just by having to search for files |
|
|
Laura
2019-01-25 14:49 #
In my day-to-day work, I have to deal with like 20000 files of legacy PHP and JS code, and it's often really difficult to map the output on the site to a file/function/location in the PHP codebase |
|
|
Laura
2019-01-25 14:48 #
But I'm not sure how to implement something like it in practice |
|
|
Laura
2019-01-25 14:48 #
Hey people, I was kinda curious, I've been thinking about something I think would be a really useful feature for IDE's for a while |
|
|
Duncan Woods
2019-01-25 02:57 #
Apple patenting Swift language features is relevant/interesting/worrying for FoC: https://forums.swift.org/t/apple-is-indeed-patenting-swift-features/19779 |
| 20 comments | |
|
|
Mariano Guerra
2019-01-24 01:17 #
also, I was about to write "coding" but it felt too tied to writing text on a text editor, instead I used "compute" mainly inspired by https://www.youtube.com/watch?v=O3tVctB_VSU |
| 1 comments | |
|
|
Mariano Guerra
2019-01-24 01:15 #
"Theres not enough real estate on a laptop for modern development." <- which direction should we go, should we be able to compute in any screen size? should we require specific environment? should the environment adapt to the available devices? is computing on a smartphone a goal? |
| 3 comments | |
|
|
Mariano Guerra
2019-01-24 00:59 #
I was creating a demo that involved "no code" from my point of view, but it had 2 KSQL queries, they could have been built with a query builder but they would still be there, then I thought, is this "no code" or is it code? should it be an objective to find a better way to express and "surface" what this sql is doing here? |
| 3 comments | |
|
|
Zubair Quraishi
2019-01-23 21:50 #
@Mariano Guerra I guess you meant SQL as being used to wire components together using components in a table, and another table to wire them up, a bit like Eve did? |
|
|
Zubair Quraishi
2019-01-23 21:48 #
@Mariano Guerra I still see SQL as the future of programming. It has lasted nearly 40 years already for good reason. SQL itself in the real world hardly exists though, as most vendors have added propreitary extensions |
|
|
Peter Abrahamsen
2019-01-23 18:31 #
All of us here are engaged in a collective project to figure out what those qualities are, to find good examples of them, and figure out how they fit together. |
|
|
Peter Abrahamsen
2019-01-23 18:30 #
In brief: many of us feel like improving programming means being more data centric. We’re starting to think of programming more in terms of the representation and flow of data (and information), seeing how little imperative programming we use in a viable application. When it works, we’re rewarded with much more succinct, understandable, and forgiving applications, which is important for end user programming. Some of the things SQL does not afford but seem important here are: incrementality (hence Noria and others), expressivity of queries (hence Datalog and Datomic), understanding (hence …EXPLAIN?), history and forgiveness (Datomic again), and understanding it as part of a greater system (hence LINQ, I suppose, and complaints of a “impedance mismatch”). Actually, systems provide a good framing here: we have many of these qualities in particular technologies, but qualities like incrementality, expressivity, understanding, etc, stop at system boundaries. Being able to treat everything in your application, including its logic, as “just data” feels necessary for us to move forward with programming. You would have to dramatically reimagine SQL to accomplish this, but the theories it’s based on, and the research that’s been done since its creation, are absolutely key. Treating a database as a big hash map is going the wrong direction. Oh, sorry, that wasn’t brief. |
|
|
Dev Doshi
2019-01-23 09:59 #
GraphQL seems to be a more expressive/high level query language than SQL (and things like relationships, sorting, filtering, are left up to the interpretation implementation) so I'd imagine something like that might be more likely. I think with the right type representations things like program synthesis can at least stumble upon valid wirings, and the problem gets shifted back to the specification of desired outcomes |
| 5 comments | |
|
|
Mariano Guerra
2019-01-23 08:13 #
is SQL a part of the future of programming? is flexible configuration for wiring different things part of the future of programming? can we avoid configuration and wiring as we know it? |
|
|
Andrew Reece
2019-01-21 15:05 #
The stereotypes of UI/UX-focused and performance-focused programmers tend to be somewhat at odds, but I'm starting to optimistically think that they may not be so diametrically opposed... I just finished reading the book 'Data Oriented Design: Software Engineering for Limited Resources and Short Schedules' (of which the author has a free online copy here: http://www.dataorienteddesign.com/dodbook/) and I was struck by a few of his recommendations related to this group (there's definitely more, but these are the things at the top of my head atm): 0) (for a bunch of performance reasons, data are better considered as collections rather than single objects - or even objects at all) 1) Despite their initial appeal, the paradigm of 'objects' falls short in a number of ways. 'Relations' map more consistently between human concepts and computer implementation, are simpler (and so are easier to debug), and typically faster to do computations with. 2) Relatedly, it's generally a good idea to lay out data similar to a normalized relational database - this kept making me think of Eve (@Chris Granger were you at all aware of/influenced by the DOD 'movement'/approach?) 3) 'Existence-based' programming (see the chapter of a similar name) reduces a lot of boilerplate noise and eliminates-by-design the possibility of a few classes of errors 4) A mixture of queues and hook/subscription/reactions slot in nicely with the paradigm. This leads to easy concurrency with effective immutability without the mental and CPU overhead of mutexes. |
| 12 comments | |
|
|
Andrew Reece
2019-01-21 14:34 #
I finally got round to listening to "The Edges of Representation" podcast ep. @Steve Krouse, you were asking about papers on notations and 'Cognitive Dimensions' came up. A paper in a similar vein that I've found useful is Daniel Moody's 'The “Physics” of Notations: Towards a Scientific Basis for Constructing Visual Notations in Software Engineering http://www.cs.uu.nl/docs/vakken/arm/literature/Moody2009-DesignScience.pdf Quoting PoN as to where it fits in the literature: "The Physics of Notations incorporates both a Type IV theory (Section 3) and a Type V theory (Section 4), which are higher evolutionary forms than the CDs framework (Type I). However it should not be seen as a direct competitor for the CDs frame-work as its scope is much more modest (visual notations rather than cognitive artifacts). Instead, it should be seen as complementary: it provides exactly the type of detailed, domain-specific analysis that the authors of the CDs framework argued was necessary to supplement the “broad brush” analysis provided by CDs" Type 1: Theory for analyzing Type 4: Theory for predicting and explaining Type 5: Theory for design and action (Aside: while trying to find the PDF for this again, I came across a paper looking at using it directly for visual programming language analysis: Towards an Operationalization of the “Physics of Notations” for the Analysis of Visual Languages (Storrle & Fish) https://pdfs.semanticscholar.org/d4bc/b466b1390295354d0cc897ab02058f2f8cad.pdf) I used PoN when writing my undergrad dissertation on improving the notation for a human factors tool/diagramming thing (somewhat similar to UML) representing human tasks. Some crossover, although not exactly the same as your likely use. IIRC it illustrates putting PoN to use. I can probably dig it up if you're interested? |
| 1 comments | |
|
|
Matt Marcus
2019-01-21 12:16 #
Happy birthday @Steve Krouse! :confetti_ball: |
|
|
Mariano Guerra
2019-01-21 09:24 #
https://www.microsoft.com/en-us/research/blog/influencing-ma… |
| 2 comments | |
|
|
Steve Krouse
2019-01-21 06:47 #
Future of Coding Online Meetup #1 Video: https://www.youtube.com/watch?v=XdSE0-HemWQ&t=2s |
| 4 comments | |
|
|
Vladimir Gordeev
2019-01-20 23:59 #
Summary: not only UI should be fit for our monkey brains, but also programming abstractions. |
|
|
Vladimir Gordeev
2019-01-20 23:53 #
Some thoughts after meetup. Users are humans. They evolved from monkeys not so long ago. That's why today's UI uses shades, smooth animation, tries to look Material: this way UI reminds real world that we evolved against. That's why one of the most effective ways to comprehend math is to rely on geometry, visual thinking. We may think about programming environments (languages) as an UI for program design. Maybe this programming UI should also be limited to only those abstractions that fit well into human brain. Those abstractions and ideas that can be experienced in everyday monkey life. Abstractions and ideas that fit well: - idea of immutable data. Most objects in real world most of the time stay unchanged. Just like we have many identical pieces of paper (or rocks) that we modify, we have many copies of same immutable data, that used to produce something new. - idea that objects behave differently in different contexts (partial application of pure function as context update?). Objects in real world behave differently when they are places in different context: warm, cold, light, dark. - idea that actions can be undone by traversing routes backwards. That what we do, when we lost our keys in the middle of the route. We try to remember where exactly we walked, and walk backwards. Once we found the keys, we create new branch of walk. - idea of separation for reliable actions, and unreliable actions that may have unpredictable outcome. If you work with static objects (or objects that move linearly), you can be sure that you can walk, jump, catch, run pretty much unconsciously with desired results. If you engage with another actor: a moving object, you need to calculate, negotiate, and it's much harder. In real world reducing number of moving objects, using as many static objects as possible makes life easier. Same in programming: keeping as many things immutable as possible, reduce number of dependencies that can change behavior without your explicit command -- makes life easier. Abstractions and ideas that don't fit well: - closure function that captured IO interface (tcp socket, db connection). Basically what you get, is special kind of object that may behave totally differently, regardless of your input. It has implicit invisible dependency that change its behavior. It is not an object under your control, but rather an independent actor that you need to negotiate with (just like another human being). - objects that can arbitrarily modify their own behavior. We have that kind of objects in languages with metaprogramming (e.g. Lisp), but we rarely see anything similar in everyday life. Most of the time objects are changed explicitly from outside. - idea that object can implicitly change context, global state. If there change, it's always visible and explicit. |
| 3 comments | |
|
|
Tom Lieber
2019-01-20 18:29 #
@Nick Smith I don't think so, but it's just because you're talking about the quality of the communication and I'm talking about the amount. I'm saying that when protocol boundaries match team boundaries, cross-team discussion is only ever needed when the protocol changes, whereas without protocol boundaries, the teams potentially step on each other's toes with every change. You're right about maintainability, but today it's very easy technologically and organizationally to enforce a single programming language across the organization, whereas it's nearly impossible for people to collaborate in multiple languages at any level smaller than a server. That's a lever that we just can't pull, even in cases where it might make collaboration more efficient. A type of collaboration I see a lot is when my team needs another team's expertise. An RPC protocol can be written to satisfy almost any language's type system guarantees, so theoretically the only difference between calling a method written in the same language and one in a different language should be where the computer looks for the implementation. But when I ask a team of machine learning experts to write a GetRecommendedMovies() function for my web site, and their preferred ML library is TensorFlow, their implementation strategy varies dramatically based on which language I want to call the function from. I don't think we necessarily want that collaboration overhead. Usually, we don't gain anything from it. And if in the course of writing GetRecommendedMovies(), they accidentally introduce a memory leak, does the user get a connection-lost error because the whole server goes down, or is the movie recommendation part of the page just empty because I handle the error on my side? Do I have to fix their bug to work on other parts of my page? And if I want to continue development with a working version of their code (not just a black hole that behaves as if the function never existed), do I have to root cause the bug to figure out which commits to revert, or can I just back out all of that team's changes (the ones on their side of the protocol boundary) from the past week? Can I do that without losing everyone else's changes from that same period? This is the shape of my collaborative coding dream. :slightly_smiling_face: |
| 9 comments | |
|
|
William Taysom
2019-01-20 16:47 #
@Dev Doshi @Steve Krouse Yes, I also missed the meetup announcement since it was hidden in what became the "just wanted to put feelers out for general interest" thread. You can find some minutes here friends https://docs.google.com/document/d/1HmeMPnEWn45nGuboM0-GDmky…. |
|
|
Nick Smith
2019-01-20 16:17 #
> And at design time, it's inefficient for every line of code to be up for debate This sounds more like a people problem than a tech problem though. Isn't it better solved through good communication? |
|
|
Nick Smith
2019-01-20 16:16 #
> At source control time, it's painful that our changes are interspersed such that my piece is broken until you fix yours. I agree. The ability to execute incomplete programs is a way around this. Check out hazel.org . |
|
|
Nick Smith
2019-01-20 16:15 #
> At authoring time, it's limiting that my team has to contribute to your project in Python because your part is in Python But on the contrary, letting everyone choose their own language has to be a nightmare for maintainability, e.g. when the person who wrote a chunk of code in their own language and style leaves the project. > At run-time, it's limiting that when your piece crashes mine goes down with it Does RPC solve this better than projects with a single code base and a good type system? RPC is synchronous, so a failed call will cause an error value to be returned either way. |
|
|
Tom Lieber
2019-01-20 16:06 #
Just to continue the conversation about collaboration a bit… RPCs have been the secret sauce in all my successful collaborations, large and small. At work, hundreds of people collaborate by splitting into 3–10 person teams whose servers communicate over agreed-upon protocols. Teams just exchange addresses then go to work in their silos where communication is lightweight. In my side-projects, RPCs allow everybody involved to use their favorite programming languages and development environments. And in academia, the people who built on my work did so because I released it as a library with a well-defined protocol. On the flip side, the biggest failures I've been a part of started with "let's all work on the same code base" as a key part of their mission. When there were a lot of people, the failure was because that goes against any hierarchical organizational structure. When there were few people, having no clear areas of ownership led to a tragedy of the commons. So if we want to change coding to make collaboration more efficient, I think we need languages that give us vastly more separation, to enable the divide-and-conquer strategy of collaboration that people tend to use. At authoring time, it's limiting that my team has to contribute to your project in Python because your part is in Python, and that you should even notice if mine isn't in Python. At run-time, it's limiting that when your piece crashes mine goes down with it. At source control time, it's painful that our changes are interspersed such that my piece is broken until you fix yours. And at design time, it's inefficient for every line of code to be up for debate rather than having the boundary between my part and your part be the sole surface of discussion. |
|
|
Dev Doshi
2019-01-20 14:42 #
Also, I would recommend flipyourtraining or something like our own subreddit for discussing all our links and stuff. In something like slack or google docs it's too easy to miss changes IMO |
|
|
Dev Doshi
2019-01-20 14:40 #
thanks for making this happen @Steve Krouse! can we have an "announcements" or meetups channel for the next one? I missed the announcement because I don't go on twitter and missed it in the general channel |
| 4 comments | |
|
|
Nick Smith
2019-01-18 17:51 #
What makes programming hard? What makes building systems hard? I think we all have some of the "obvious" answers in our minds but I've never seen a list all in one place. I'm interested in hearing everyone's perspectives. Humour me! :innocent: |
| 19 comments | |
|
|
Gregg Tavares
2019-01-17 20:17 #
functional reactive programming and large datasets any insights? I wrote a native photo viewer (think Picasa or iPhoto). I set it to show 250k photos. With a naive implementation that had serious problems for the "reactive" part. For example there are settings on how to display the photos (with or without filename, with or without size, etc...). My understanding of "reactive" effectively all 250k photos are connected in some way to the state of settings.showDate and settings.showFilename. Of course that 250k can possibly be trimmed to just those photos that are on display (*) but even then there might be 100 to 500 photos visible which just seemed to kill all perf. Obviously there are ways to optimize but it did make me question if "reactive" stuff is really a solution for anything but relatively small forms. For example one way to fix the perf was to basically move the reactive part much higher up. The "photo grid" is "reactive" to those settings, not each individual photo. Still in a way that doesn't seems to me the promise of "reactive" where I can just declare what I want to display and what state it depends on and "magic" happens so it's wonder if "reactive" is actually the best way. I suppose I should define reactive. My understand is a reactive system is one in which a change to state triggers a change to all views of that state in some automated way. You don't have to declare the relationship between the state and the views. The fact the view used the state is enough for the system to figure out there's a connection. (*) given a pinterest style display, any change that affects the size an image is display requires a re-layout so even if you're only displaying a small portion of all photos you actually have to apply to setting to all photos above the ones being viewed in order to figure out what is actually visible given the re-layout. |
| 4 comments | |
|
|
Aidan Cunniffe
2019-01-16 06:40 #
Looks like Amazon is throwing their hat in the ring: https://www.geekwire.com/2019/aws-everyone-new-clues-emerge-… |
| 9 comments | |
|
|
Steve Krouse
2019-01-16 02:27 #
I have no plans Sunday night (London time, so that's Sunday morning SF time) and thought it could be fun do to a group video chat for people in this group. Haven't figured out format or agenda yet - just wanted to put feelers out for general interest :+1: |
| 18 comments | |
|
|
Kartik Agaram
2019-01-12 20:04 #
https://www.sandimetz.com/blog/2018/21/what-does-oo-afford |
| 3 comments | |
|
|
Marcel Goethals
2019-01-12 06:59 #
Seems relevant: https://www.technologyreview.com/s/536356/toolkits-for-the-mind/ How does the design of a language effect the culture of it's users? |
| 6 comments | |
|
|
Shalabh
2019-01-11 13:56 #
Great essay by @Will Crichton: http://willcrichton.net/notes/gradual-programming/. Reminded me of the somewhat related: @Tomas Petricek's http://tomasp.net/blog/2018/programming-interaction/ |
| 10 comments | |
|
|
William Taysom
2019-01-08 02:40 #
@Steve Krouse and Vlad Magdalin (not here at least under that name), what breadth and depth in the Podcast https://futureofcoding.org/episodes/035 this week! What is planning? (A: "Rules for a computer to follow.") What is direct manipulation in contrast to liveness? Got me thinking. I propose a new term "direct attention" to help draw attention to the nuance of manipulation. Consider this: much of what we call direct manipulation is not as direct as it seems. In some sense, drawing on a screen with a mouse or trackpad is not nearly as direct as sculpting clay. The tool, the control surface, is removed from the material being manipulated. And it's not that fingers are always more direct else why would anyone want a stylus for a tablet? In that case, fingers are getting in the way of something. Of what? Our attention. With a stylus, most can more easily attend to the work. Most, but not all. For the disabled or a young child, the pencil will be less direct rather than more. And it works the other way too. Experience, training, habit changes the fluidity of things. Some are comfortable with email as a locus (or Skype) over AirDrop. Language, natural language, is humanity's most significant attention modifier: spoken language more naturally, written language through learning and practice with its attendant flexibility and abstraction. A master, through the technology in his or her mind, may be more at home, more readily able to manipulate the abstraction than medium, perhaps to the point of becoming disconnected from the substrate. (An anecdote involving Beethoven comes to mind.) And at that point, I suppose the interface has become a new material and ultimately a thoroughly subjective one. |
| 4 comments | |
|
|
Miles Sabin
2019-01-04 03:31 #
There's a lovely example of using dependent and linear types to infer the implementation of matrix transpose from it's signature starting here: https://youtu.be/mOtKD7ml0NU?t=1575 |
|
|
Miles Sabin
2019-01-04 03:26 #
Do people here find this sort of thing appealing? |
| 13 comments | |
|
|
Miles Sabin
2019-01-04 03:25 #
This talk that Edwin Brady gave at CodeMesh this year has some really nice examples of that: https://www.youtube.com/watch?v=mOtKD7ml0NU |
|
|
Miles Sabin
2019-01-04 03:24 #
As I mentioned in #introduce-yourself types are very much my thing. I'm very interested in where languages like Agda and Idris are taking us. In particular I think it's fascinating to see how types can allow tools to help us to write programs. |
|
|
Miles Sabin
2019-01-04 03:21 #
Hi folks. |
|
|
Jasim A Basheer
2019-01-03 08:34 #
I wanted to share a great talk about teaching computational thinking by Brown Univ. professor Shriram Krishnamurthi. https://www.youtube.com/watch?v=rM_E2IwlprY Also excited to see @Max Kreminski here. Your post on problem-solution ordering (https://mkremins.github.io/blog/doors-headaches-intellectual-need/) has strongly influenced how I think about learning and teaching programming. In this talk Prof. Krishnamurthi adds an insight about inductive learning where you go from concrete instances to a generalized understanding (problem-solution ordering) - it is difficult to transfer a concept thus learned to other instances of the same underlying problem. So while inductive learning is essential to understand a problem in the first place, students also need to examine the problem purely in abstract so that they are able to transfer it to any other instance. |
| 5 comments | |
|
|
Jonathan Conway
2019-01-01 14:47 #
https://www.youtube.com/watch?v=2_4ecWDohnk |
| 83 comments | |
|
|
Antranig Basman
2019-01-01 10:44 #
Hi all - I hope you have had a relaxing holiday season. I'm posting to remind everyone of the upcoming Salon des Refusés 2019 Call for Papers which you can read at https://www.shift-society.org/salon/call-for-papers/ . This is a pretty new venue for paradigm-busting new approaches to programming - check out some of the interesting contributions we've received in our first two years. There are lots of folk here who have posted thought-provoking and counterfactual views on how we need to reframe the task of programming so I feel sure we could get many great contributions and start some great conversations. In general we would be far more interested in some unpolished, rough work that is much more challenging to the status quo than some more well-worked out and mature work that is less disruptive - save that for other venues. A word to the wise - although the official deadline is next week a rumour on the grapevine suggests that this will end up being extended a couple of weeks : P - so don't shy away because you think there's too little time to get your ideas down. Looking forward to hearing what you are thinking about! |
| 2 comments | |
|
|
Max Kreminski
2019-01-01 10:24 #
Slightly different take on the previous thread: Fortnite itself actually is the future of programming! (Well, sorta.) Shared-virtual-world games like Fortnite (and Minecraft before it) are successful primarily due to their status as digital social environments. In fact, these sorts of games are increasingly taking over the role of “third places”, or semi-public community hangout spaces (https://medium.com/s/greatescape/fortnite-is-so-much-more-th…). One of the big problems with these new digital third places is that they’re not open to improvement or modification by the people who spend their time there. The rules of Fortnite, and the map you play on, are determined by some distant corporation; even if everyone in a given player community would favor a certain adjustment to the rules, there’s no way for that community to implement their desired change short of petitioning the developers to implement it globally. Making digital third places approachably programmable from within would change this dynamic, while simultaneously giving a whole bunch of people both a motive and a means to learn to program. We can look to MUDs as a key source of inspiration here. MUDs embody a tradition of allowing players to shape their shared digital world – including, in some cases, by scripting dynamic behaviors for NPCs and objects. Getting approachable scripting tools embedded in a widely used modern digital social environment would be a major coup in terms of giving users back some control over the digital spaces they inhabit. Situating a “future of programming” vision in this context also suggests a particular focus on building tools that enable communities of novice user-programmers to collaborate, self-govern, and learn together. Empowering individual users to shape the environment is necessary but not sufficient; the real leverage will come from empowering small communities of people with varying levels of skill and interest. You can maybe think of the end goal here as something like a community code-garden, where most users know just enough about how to program the environment that they can chip in to help improve it in small ways here and there. Meanwhile, a few informally designated “local experts” will sometimes step up to take the lead on larger-scale changes or improvements. I keep meaning to write about this at greater length, but here’s a related Twitter thread I wrote when some of this stuff first clicked for me: https://twitter.com/maxkreminski/status/1030838313429528576 |
| 9 comments | |
|
|
Stefan Lesser
2018-12-29 20:04 #
What if the future of programming is already here, and we just don’t see it as such? https://www.cnbc.com/amp/2018/12/14/the-reason-epic-landed-a… |
| 15 comments | |
|
|
Edward de Jong
2018-12-27 23:53 #
actually Mr. Reese has an excellent point. If Tolstoy wrote War & Peace a sentence at a time, and had a group of editors watching over his shoulder as he wrote longhand onto paper this very complex novel, would it have helped or hindered? i think most of us can imagine it would have prevented the creation of the work. If people want to have any fluidity in their creative process having interruptions that distract you from the larger goal is indeed counter-productive. When you want to check a section, you might indicate such, It is an interesting contest, to see if the graphical input of programs can beat the textual in flexibility and speed at the same time. Clearly that is the goal of many of the people on this board. I am of the opinion that we must improve the underlying language first before attempting a graphical input assist, because the current languages have deep intrinsic flaws that prevent robust programs, and hinder interchangeable parts. If we create a graphical programming system, let's say something like Luna is trying to do, how do you copy/paste code unless you have an underlying textual form. So whatever graphical assist one invents, it must produce a textual form in order to be printed, and sections adapted. If you pin a programming language to a single IDE and editor you doom that language, because no IDE lasts nearly as long as a language does. A language has a grammar, a set of abstractions, and a runtime to support its execution on the operating system of the time. An IDE is a much more complex thing, that usually depends deeply on the graphical primitives of an OS. |
| 16 comments | |
|
|
Ivan Reese
2018-12-26 22:14 #
RE: 1.545813.html… (Warning: Contrarian Take, Coming In Hot!) And yet, in so many other fields, the moment of creation is far removed from the moment of reaction, and it's fine. When I paint a painting, I'm not going to get feedback from my audience (or any buyers) until after the painting is done. Some painters might benefit from getting that feedback throughout the creative process. Most (myself included) would surely find it stifling. Point: It is at least conceivable that there are benefits to the lack of immediate feedback when programming. It'd be interesting to try to spitball what those benefits might be. It requires a broader sense of "feedback" than just "does it compile and what does it do when run?", which is of course a broader sense than the one @Shalabh intended, but worth considering because we're all here exploring that broader space. |
| 13 comments | |
|
|
William Taysom
2018-12-24 22:40 #
I can't say that writing and debugging are distinct for me, but the part that is more debuggish feels like it's 95% at least. Of course, writing is fun in a way that debugging almost always is not and time flies. |
| 2 comments | |
|
|
Edward de Jong
2018-12-24 21:12 #
half of the people in this group, when they think of "future of coding", imagine more convenient, more grpahically interactive IDE environments, where you use drag and drop mechanisms, and extrapolate from autocompletion to not just a word but a phrase. Others imagine more robust languages which free the programmer from the drudgery of debugging, which some estimate takes 85% of all programming time. A lot of people over-estimate the time it takes to enter the code, and under estimate the time it takes to get it working perfectly. I would be very interested in the group members divulging what percentage they estimate of the total time making a program to be debugging. |
| 29 comments | |
|
|
Jack
2018-12-22 13:00 #
A CCC talk that might be of interest to folks here: “Taming the Chaos: Can we build systems that actually work?” https://fahrplan.events.ccc.de/congress/2018/Fahrplan/events/9647.html |
| 2 comments | |
|
|
Peter Abrahamsen
2018-12-21 14:03 #
Does anyone know how note sharing in Apple’s Notes app is implemented? Does it use operational transform? CRDTs? |
| 5 comments | |
|
|
Steve Krouse
2018-12-21 03:37 #
Announcement: Just changed the name of the Slack to "Future of Coding" because it was a slightly awkward accident of history that it had an ever-so-slightly different name. The old urls should still work for a while via redirect |
| 11 comments | |
|
|
Andrew Reece
2018-12-21 02:39 #
As a side note, the author talks about exceptions as though they are a Good Thing (TM). I'm not sure if other languages have somehow fixed the issues with them, but I tend to agree with Raymond Chen's analysis here - exceptions are too difficult to handle or recognize when poorly handled: https://blogs.msdn.microsoft.com/oldnewthing/20050114-00/?p=36693/ |
| 5 comments | |
|
|
Andrew Reece
2018-12-21 02:16 #
Have people here given much consideration to structured concurrency? I haven't spent a huge amount of time writing multithreaded/async code, and so hadn't given it much thought. I apologise if this is all old news to many of you... I came across this article that makes a strong case that most of our current primitives have a similar effect on flow control to goto. It then presents the analogous solution. (N.B. others have named the same concept different things - bundle, scope, nursery, maybe others...). Notably this approach would seem to map to visual representation far more easily than promises/arbitrary thread spawning/... https://vorpus.org/blog/notes-on-structured-concurrency-or-g… For related links, including to videos on the topic, see http://250bpm.com/blog:137 Aside: the term 'structured' seems too generic for what people actually mean. AFAICT, in the context here/of gotos, 'structured' always means 'hierarchically structured', despite other types of structure existing. |
| 34 comments | |
|
|
Peter Abrahamsen
2018-12-20 10:51 #
I don’t see how it could be |
|
|
Lucian Ursu
2018-12-20 10:12 #
anyone is familiar enough with vim to know if it can be turned into a projectional editor? |
| 3 comments | |
|
|
Ivan Reese
2018-12-20 10:03 #
This seems nicely related to the above https://arxiv.org/pdf/1811.09989.pdf |
| 2 comments | |
|
|
Jack
2018-12-20 07:06 #
I’m trying to develop some really basic ‘hand-craftable computing materials’ for a study with musical instrument makers, so not necessarily slime mold (sorry I don’t know how to do slack threads on mobile) |
| 1 comments | |
|
|
Duncan Cragg
2018-12-20 06:57 #
You've just been digging into slime mold? :open_mouth: |
|
|
Jack
2018-12-20 06:46 #
Is anyone here actively involved in ‘Unconventional Computing’? I’ve just been digging into this new springer encyclopaedia and would be interested to hear from anyone actually doing this kind of work (also, message me if you don’t have institutional access and would like to read) https://link.springer.com/referencework/10.1007%2F978-1-4939-6883-1 |
|
|
Steve Krouse
2018-12-20 04:37 #
Announcement: :tada: We finally have a README for this Slack! Comments on the doc much appreciated futureofcoding.org/slack-readme !everyone |
|
|
Steve Krouse
2018-12-20 03:03 #
Would there be interest in starting a #music channel? @Charlie Roberts @Arthur Carabott @Ivan Reese @Jack @Jordan |
| 2 comments | |
|
|
Daniel Garcia
2018-12-19 17:34 #
/poll "What's your favorite programming language?" "Smalltalk" "Haskell" "Lisp" "Erlang" "OCaml" "C" "APL" "Ruby" "Other (Great if you can mention it in the thread)" |
|
|
Scott Anderson
2018-12-19 14:10 #
hey, so I just remembered that I live ridiculously close to Dynamicland (less than a mile), but I've never visited. I know and have got intros to various people associated with it, but always forget to follow up. Last I heard Dynamicland is closed, is that true? Because I live so close is there anyway I can start setting up regular visits to understand the system as a programmer? I figure this slack be a good place to ask. |
| 7 comments | |
|
|
Steve Krouse
2018-12-19 09:06 #
!everyone just created the #administrivia channel (h/t @Stefan Lesser) to discuss ways to better collaborate, improve this Slack, or resolve community issues. Feel free to join if you are interesting in yak shaving with us :beers: |
|
|
Duncan Cragg
2018-12-19 02:47 #
:smile: |
|
|
Duncan Cragg
2018-12-19 02:44 #
/poll "What are you working on?" "Live coding, IDEs, languages, etc, for techies" "Programming languages or environments for everyone" "Neither of the above .. let me explain.." "No project (yet) - just here to pick up the vibe" |
|
|
Stefan Lesser
2018-12-19 02:14 #
This also turned my attention to Alan Blackwell — I read his name a few times now and saw really interesting sounding papers of him referenced in not just the one he wrote that I mention above. Is anybody familiar with his work and has suggestions which ones to read first? |
| 5 comments | |
|
|
Stefan Lesser
2018-12-19 02:10 #
I just finished Cognitive Dimensions of Information Artefacts: a tutorial by Thomas Green and Alan Blackwell http://www.cl.cam.ac.uk/~afb21/CognitiveDimensions/CDtutorial.pdf It provides a great framework for UI/UX-related properties of system design starting with a list of dimensions as sort of a catalogue, and then also applying them to practical examples. One of the examples is about visual programming languages and applies the framework to ProGraph and LabView. I found it offers a very helpful perspective and language on how to think about what makes a system great from a user perspective and obviously the example of visual programming languages should make it a really good fit for this group. |
| 3 comments | |
|
|
Stefan Lesser
2018-12-19 02:03 #
Would it make sense to have those kinds of meta-discussions about forum software and governance structures in a separate #meta channel? |
| 1 comments | |
|
|
Ivan Reese
2018-12-14 21:58 #
In the most recent episode of the podcast, Katherine Ye mentioned in passing a game called DragonBox. I was a big fan of DragonBox back in the day, and I was excited to be reminded of it. The above video does a great job of quickly explaining how it works. Here's the App Store link if you want to try it yourself: https://itunes.apple.com/us/app/dragonbox-algebra-12/id634444186 Summary: through super-simple game mechanics, introduced one by one, you learn how to solve some fairly straightforward puzzles. Then, after solving a few dozen of these, the cute monster graphics start to be replaced with other symbols — first dice, then variables, then operators. Without all that much ceremony, you (spoiler) discover that you've been balancing, reducing, and solving algebraic equations all along. |
| 38 comments | |
|
|
Ivan Reese
2018-12-14 21:58 #
https://www.youtube.com/watch?v=uua7Xx5iCWw |
| # |
Steve Krouse
2018-12-13 02:28 #
We've got the up-and-to-the-right chart to prove this community is taking off! |
| 9 comments | |
|
|
Ivan Reese
2018-12-11 12:26 #
I have a huge inferiority complex wrapped around Devine Lu Linvega. Everything he makes oozes style. Of course you wouldn't build a web server using it. He makes programming tools for art, as art. That as art part tends to rub ~people~ programmers the wrong way — it makes them obsess about "novelty" and "aesthetics" and "practical uses". Those people are missing the point. Just like we have our FoC community, there's a great community of people blurring the line between programming tools, games, music, and visual art, which Linvega is a part of. I highly recommend people take a look at the developer XRA (https://twitter.com/xra), who is making a video game called Memories of a Broken Dimension. Do a "MoBD is to regular games as X is to regular programming languages", and you'll find a very interesting/fruitful idea space to explore. |
| 13 comments | |
|
|
Jack
2018-12-11 11:34 #
Not sure you would want to write a web server using it though :) |
|
|
Jack
2018-12-11 11:16 #
Some examples programs below. I like how easy it is to do visual poetry. https://twitter.com/neauoire/status/1069129232708657152 https://mobile.twitter.com/neauoire/status/1071878738613129217 https://mobile.twitter.com/Johannes_Knop/status/1071852274610331649 |
|
|
Jack
2018-12-11 11:14 #
Somewhat related to visual / spatial languages discussed at the London meet-up; I’ve been enjoying playing around with this 2D live coding environment today github.com/hundredrabbits/orca |
|
|
Edward de Jong
2018-12-11 01:35 #
There are a lot of new programmers coming into the business, with shiny new Apple laptops ready to create mashups of different subsystems, and create wonderful new products. but perhaps we can create objective measurements that we can apply to code so that we steer towards quality. It has really been something that experienced people are good at gauging, but a more objective standard would be nice. It is hard to enter the world of interchangeable parts when people don't label inputs and outputs clearly. And it is so hard to document data structures in text. maybe markdown with embedded graphics needs to become the standard. |
|
|
Edward de Jong
2018-12-11 01:26 #
In the hard sciences, if you do an experiment that proves some great new theory, it isn't accepted on its face. It has be replicated in at least one other lab in order to be accepted, otherwise it might have been a fluke. There is that funny joke journal of irreproducible results. Anyway we should consider starting to look at code with a real critical eye, and ask if another person could modify or improve (or at least understand) how a program works, and start ranking things for their readability/complexity/understandability. I once had access to the UNIX source code, back when it was a licensed thing and under NDA, and the code that did the FTP transfers was so clever with really gnarly computations about how to maximize throughput. No chance of improving that without breaking it for a normal mortal. And there aren't even 100 people on earth who understand the TrueType language used to generate all the typeface renderings. I would venture to say that the text entry field code in any operating systems you care to mention is at least a million lines total. The second you ask for text entry, with typography, you are entering a vast land of complexity, and really that is the core of what OS'es give you, is text handling. |
|
|
Stefan Lesser
2018-12-08 02:19 #
I also re-watched Bret Victor’s “The Future of Programming” again yesterday. Seriously, if you’re in this Slack and you haven’t seen it, you must watch it. Immediately. And if you have watched it, but that was a while ago, you should really watch it again. Apart from that this talk is really well done and entertaining, it also provides a great framing for pretty much all the discussions going on here. Let’s make sure we never believe we know what we’re doing! https://vimeo.com/71278954 |
| 18 comments | |
|
|
Stefan Lesser
2018-12-08 02:08 #
Just finished this 3-part series: https://pron.github.io/posts/computation-logic-algebra-pt1 If you’re interested in the history of computer science and the very beginnings of humanity discovering and understanding algebra, logic, and computation from Aristotle to Turing and van Neumann it’s worth a read. It’s practically a book, so it will take you a weekend and it doesn’t present any new insights, other than how all those fundamental ideas and people influenced each other and when that happened on the timeline of history. |
|
|
Daniel Garcia
2018-12-07 18:31 #
> The future of direct manipulation is promising. Tasks that could have been performed only with tedious command or programming languages may soon be accessible through lively, enjoyable interactive systems that reduce learning time, speed performance, and increase satisfaction. http://iihm.imag.fr/blanch/ens/2016-2017/M1/TLI/readings/198… mentioned by Sean McDirmid some days ago |
|
|
Kartik Agaram
2018-12-07 16:46 #
@Antranig Basman's https://github.com/amb26/papers/raw/master/onward-2016/onward-2016.pdf [1] really buries the lede. Here's what I think the primary proposal is, from deep inside section 6, 80% of the way down. The basic recommendation: > ...all design elements be exposed in a structured space of publicly addressible names... In more detail: > We propose an aggressive program to assimilate the functions of traditional programming languages and their component systems, by stratifying them vertically into two parts: > > * On top, an integration domain which encodes not only relations between runtime values, but also the structure of any adaptations expressed in the “virtual class” idiom seen in section 4.3, using the selector structure described in section 6.1.1 to predicate the addresses of these relations and the targets of these adaptations. In order to retain the symmetry implied by our “algebra of differences”, all component structure is expressed within the integration domain, that is, it encodes all classes as well as virtual classes. > > * Below the integration domain, then, remains a highly impoverished language dialect that just consists of free functions which express any remnant computation that could not be effectively expressed in the integration domain. The free functions in the impoverished language are addressible through stable names in their own global namespace, and each of them obeys the Law of Demeter strongly, in that they are pure functions of their immediate arguments. > > ...assimilating the power of reference to the addresses of state into an integration domain which is incapable of computation... [1] Promoted from https://futureprogramming.slack.com/archives/C5T9GPWFL/p1543… |
| 6 comments | |
|
|
Shalabh
2018-12-07 11:08 #
Nice intro to behavioral programming: http://www.wisdom.weizmann.ac.il/~harel/papers/Behavioral%20programming%20.pdf |
| 8 comments | |
|
|
Duncan Cragg
2018-12-07 10:15 #
@Katerina solstad - related: good discussion of physicality in "computing"/programming here: https://phenomenalworld.org/metaresearch/the-next-big-thing-is-a-room |
|
|
Duncan Cragg
2018-12-07 05:54 #
Wanna start up a startup on Kickstarter? :smile: |
|
|
Duncan Cragg
2018-12-07 05:53 #
.. not sure how to do it, but a machine that matched a pattern of blocks of a certain shape, then replaced them with another set of blocks .. |
|
|
Katerina solstad
2018-12-07 05:45 #
Should I patten the idea?))) |
|
|
Katerina solstad
2018-12-07 05:37 #
Shape fitting idea of scratch for example does not have to stay on the screen only. One can turn things into physical objects for playing with. |
|
|
Katerina solstad
2018-12-07 05:36 #
Child can build something out of such new type of blocks, take a picture and load it to the computer and the “tool” would turn it into computer program. |
|
|
Katerina solstad
2018-12-07 05:32 #
Coding tools for the blind. Honestly, I had this idea only because sharp young minds need to keep moving. Sitting and looking at the screen turns some young minds that could think out of the box and be very innovative away from coding just because it is a sitting all day “activity.” Teaching to program very young children has to be through activity. Building blocks the closest thing to it right now. Perhaps there are should be new kind of building blocks for kids that introduce computer languages. Just a thought this morning. |
|
|
Ivan Reese
2018-12-06 19:56 #
I believe, to my core, that programming should lean into doing things that feel so dang cool as much as possible. |
| 4 comments | |
|
|
Ivan Reese
2018-12-06 19:55 #
Yeah, but at the risk of sounding like a nerd (here!? no way!) it has always felt so dang cool to get a computer to do something because I told it to with my own human meatspace voice. It's frustrating when it doesn't work, sure, but in a "56k modems were so slow!" sort of way, not a "why doesn't iOS have a system-wide convention for undo/redo?" way — in other words, we can start thinking about what neat things you could do with your voice now, with a fairly reasonable expectation that speech recognition will improve. It's not held back by (eg) bad design decisions; it's held back by the insufficiently-expanded boundary between advanced tech and magic. |
|
|
William Taysom
2018-12-06 17:42 #
Having tried dictation more on my phone, editing mistranscribed messages could use some work. Speech recognition has improved vastly, but I feel like still too much ceremony in it. Invoking an agent is less like conversation and more like casting a spell. |
|
|
Phil Jones
2018-12-06 17:06 #
I think voice + drawing surface is a really interesting combination. I'd love to see a classic boxes and arrows type diagramming system where I could use a pen to put the boxes in and add connections between them, but use voice to say what the boxes are .... eg. make a box with the pen, hold pen over the box and say "this is a class called Car" |
| 3 comments | |
|
|
Ivan Reese
2018-12-06 14:14 #
Lastly, it might be nice to specify a DB query using voice input, especially in a sandbox environment that shows example results as you hone the query. |
|
|
Ivan Reese
2018-12-06 14:01 #
Here's another domain — automation. "Hey Siri — set my living room lights to 50% brightness, close the blinds, and play some white noise. Save this as a new scene called 'Headache'." If you're going to use voice to invoke something, and that something can be customized, I'd like to see consideration for how you could customize it with your voice. Don't just think home automation, either. Think about building Automator actions, where there's only a small set of available commands and extremely simple composition. The risk of ambiguity is quite low. |
|
|
Ivan Reese
2018-12-06 13:57 #
There could be a really strong domain-specific angle to this. For instance, when working on Max patches, I already have a mic plugged in to the computer, so that I can feed it nonsense echolalia mouth noises as test data for the patch. Perhaps you could flip the mic input in and out of "edit mode" the same way you do for mouse/keyboard input (just like Hypercard, for those who don't know Max). That'd be nice in the cases where my keyboard and mouse are all the way over there, on the far side of a pile of instruments, and I just want to make a quick tweak — set a midi foot pedal to toggle mic edit mode. |
|
|
Phil Jones
2018-12-06 08:20 #
Not really ... I type much faster and much less ambiguously than I speak |
| 5 comments | |
|
|
Katerina solstad
2018-12-06 05:42 #
Coding by speaking would be great. ) |
| 3 comments | |
|
|
Katerina solstad
2018-12-05 07:29 #
Maybe it is not democratizing but rather humanizing. |
|
|
Katerina solstad
2018-12-05 06:07 #
Or community of coders “future of coding” (if organization is not the right word) |
|
|
Katerina solstad
2018-12-05 06:04 #
Would that be correct to say that organization “future of coding” CARES to make it possible for YOU whoever you are to CODE. ? |
| 11 comments | |
|
|
Katerina solstad
2018-12-05 05:59 #
I came up with a design idea for landing page on future of coding. ) |
| 3 comments | |
|
|
Duncan Cragg
2018-12-02 03:29 #
Just realised my brain is physically incapable of understanding threads in Slack. Sorry folks, I know it's me not you.. |
| 1 comments | |
|
|
Kartik Agaram
2018-12-01 21:37 #
@Antranig Basman's paper on ownable software (https://github.com/amb26/papers/blob/master/ppig-2018/What_L…) at https://futureprogramming.slack.com/archives/C5T9GPWFL/p1543… really deserves its own thread. This is fantastic. The notion of a program addition operator for arbitrary code is a huge open research problem. Consider my research plan as an alternative: changing software development customs to make comprehensibility a first-class design consideration, and giving up on black-box composition in favor of a more white-box approach where the community adapting some piece of comprehensible software for its own needs is willing to take on ownership for code they didn't write, and to mess with its guts as needed. It will require more people to be willing to learn programming. In exchange you'd be able to start now (soonish, once I come up with tools to help migrate code between divergent forks) rather than wait for a technological breakthrough. On the other hand, I've been focused on the technical challenges and hadn't scoped out their implications on the eco-system in quite so much detail. This is super useful, thank you very much for doing this work. |
| 16 comments | |
|
|
Mariano Guerra
2018-12-01 08:47 #
a two-pane browser/viewer system for viewing collections and their contents navigation into and back out of nested collections a structured editor pane for entering expressions to be evaluated a root browse of a history of expression evaluations the ability to 'wrap' a stdio based REPL (e.g. Clojure's native REPL) so that it can monitor and display the interactions therein, while still allowing them to flow back to the host (e.g. the editor) when used with non-stdio repls (e.g. nREPL), can be launched a la carte and accepts values to inspect via an API call the ability to capture nested values as defs in the user namespace the ability to run multiple independent UI windows metadata viewing datafy support extensibility to new browsers and viewers full keyboard control via hotkeys |
|
|
Mariano Guerra
2018-12-01 08:46 #
REBL is a graphical, interactive tool for browsing Clojure data. |
|
|
Mariano Guerra
2018-12-01 08:46 #
REBL - Stuart Halloway https://www.youtube.com/watch?v=c52QhiXsmyI |
|
|
Stefan Lesser
2018-12-01 04:17 #
https://programmingmadecomplicated.wordpress.com/2018/11/30/… @Joel Jakubovic You raise some interesting questions in the end. I’m tempted to start talking about (accidental) complexity and how over time this stateful mess of a running system explodes into a fractal multi-dimensional tree of stateful subsystems and that we haven’t found any other way yet to tame this complexity other than rewinding time and start all over again — hence the restarts; but I’m sure you already knew this and your list of question was more rhetorical and meant to inspire. Love the final question in your post: >How much effective control do we actually exercise over the universal simulators that we bought and consider our “own” posessions? I don’t have an answer and this can be taken very different directions. I like to think into the direction of how that complexity takes our superpowers away slowly, and how we somehow don’t feel the need to rectify that situation and instead continue piling more abstractions on top of the ones that we hardly understand anymore. |
| 11 comments | |
|
|
Antranig Basman
2018-11-30 03:56 #
Hopefully anyone who was involved with/interested in that will chime in, especially with any practical or thought experiments they were thinking of inspired by these ideas |
|
|
Antranig Basman
2018-11-30 03:56 #
But as the first priority I wanted to carry on the conversation that we were starting about George Lakoff's metaphorical model of thought, and our "book club" recommendations of "Metaphors We Live By" -> "Women, Fire and Dangerous Things" |
| 11 comments | |
|
|
Antranig Basman
2018-11-30 03:55 #
Hi - good morning guys, great to be here. Looking forward to carrying on conversations with those of you I met during the meetup on Wednesday, and meeting others who I didn't then! |
|
|
Duncan Cragg
2018-11-27 09:14 #
All very well for you to say that, but how do we know you're the real Steve Krouse? :smile: |
| 5 comments | |
|
|
Steve Krouse Test
2018-11-27 08:44 #
(I created a test slack account to explore the security of this slack. Please disregard...) |
|
|
Katerina solstad
2018-11-27 07:17 #
I am actually surprised that there is no Coding channel on TV yet. )) |
| 3 comments | |
|
|
Katerina solstad
2018-11-27 05:20 #
Here is one idea I was thinking of this morning. Maps and GPS. Imagine trying to get somewhere knowing the name of destination but never really see the map that would include your position and position of your destination with things around and between? Imagine only having GPS that can take you point to point. As a human being what would you choose? Computer will be happy with GPS you provide for it. But you as a human being? Difference between human mind and computer “thinking” is ability and need for higher level of abstraction. So would you choose to have a map or having only GPS is fine? The fact that we stopped using maps in our real travel brought us into scenarios where education is more like having GPS without ever seeing a map. Higher level of abstractions and creation of “bird views” in my personal opinion are really needed. Tools that allow such view, education materials that create such views. Tutorials, books, films, animation, cartoon books, computer games. “Maps” should be created. Any coding requires an Overview first, it helps to get the best path ( algorithm). Teaching programming needs to teach an ability for an overview of things by using an overview of things. |
| 12 comments | |
|
|
Katerina solstad
2018-11-26 07:17 #
Thank you, Caleb. |
|
|
Katerina solstad
2018-11-26 07:16 #
I am happy to see a group that seriously thinks on solving a coming problem for people to be divided in two major groups: the one who knows what to do with a computer, in the computer and the ones who do not and feel left behind. There is a need for a different type/ ways in learning programming and computer related technologies. |
| 1 comments | |
|
|
Caleb Helbling
2018-11-24 20:10 #
!everyone I have created a Meetup group for Boston FOC here: https://www.meetup.com/Boston-Future-of-Coding/ Join #in-boston for further discussion |
| 4 comments | |
|
|
Daniel Garcia
2018-11-23 09:23 #
Do you agree with the difference made in this article? https://computinged.wordpress.com/2018/11/23/literature-is-t… |
| 13 comments | |
|
|
Stefan Lesser
2018-11-23 08:14 #
I found this article very insightful: https://pron.github.io/posts/what-we-talk-about-when-we-talk-about-computation Some quotes to get you excited about reading it: >Just as a falling apple doesn’t compute integrals — it just falls — so too Turing machines and any other machine model compute neither higher-order nor first-order functions; they compute bits. >In fact, given a rich enough type system, we could burden an arbitrary portion of the computation on the type inferencer or on the collaborator (programmer) and the type checker. >Viewing machine models and language models as competing is a mistake that confuses computation (the system) with programming (concerned with syntax and semantics), two fundamentally different activities. >Machine models are far from ideal programming models when the programmer is a human. |
| 1 comments | |
|
|
Duncan Cragg
2018-11-21 01:15 #
I'm new here |
|
|
Duncan Cragg
2018-11-21 01:14 #
sorry folks, shoulda done the side thread thing! ↑↑ |
|
|
Duncan Cragg
2018-11-20 14:59 #
types are just patterns: either regexps or patterns matching structures |
|
|
Duncan Cragg
2018-11-20 14:59 #
such distillation/simplification would make a general/logical/mathematical theory easier, I'd suggest |
|
|
Duncan Cragg
2018-11-20 14:57 #
(disclaimer: that's what I'm doing in Onex/The Object Network..) |
|
|
Duncan Cragg
2018-11-20 14:56 #
which amounts to JSON with only strings for values |
|
|
Duncan Cragg
2018-11-20 14:55 #
numbers, booleans, references are strings; sets are objects |
| 3 comments | |
|
|
Duncan Cragg
2018-11-20 14:54 #
or simplify that down to strings (type by syntax/regexp), objects (map/dict/hash), lists of these three types? |
|
|
Felix Kohlgrüber
2018-11-20 14:22 #
I wonder if there's a general (mathematical?) theory on data / structures. The background of my question is that a lot of programming languages introduce very similar concepts for primitive data types and "containers". Off the top of my head: numbers, strings, lists/arrays, sets, mappings/dicts/hashtables, references/pointers, etc.. I'd be happy to hear your thoughts on this. |
| 9 comments | |
|
|
Roben Kleene
2018-11-20 10:46 #
@Tudor Girba Great points! It's a good idea to move your reply to to a thread if you can to keep the discussion organized. (When you hover my message that's the "Start Thread" chat bubble) |
|
|
Tudor Girba
2018-11-20 10:13 #
The other difference comes from the fact that the Smalltalk IDE lives in the same VM as the application, while Emacs runs in a different runtime |
|
|
Tudor Girba
2018-11-20 10:11 #
Emacs is a programmable environment. However, the level of what can be expressed is limited by the text-terminal assumption. By now, we should outgrow that assumption. |
|
|
Roben Kleene
2018-11-20 09:11 #
I've been research Smalltalk recently and I've been struck by is how similar the Smalltalk IDE is to Emacs. In particular they are both programming environments that can be modified live while they're running, with some similar bells and whistles such as easily viewing and modifying function definitions, and debugger integration. Given all these commonalities I'm surprised Emacs doesn't come up more often when discussing the Smalltalk. I'd love to hear any opinions on Smalltalk vs. Emacs, and in particular where Emacs falls short in fulfilling the promise os Smalltalk? |
| 9 comments | |
|
|
Peter Abrahamsen
2018-11-13 17:21 #
now I feel silly for not going to Lambda World |
|
|
Peter Abrahamsen
2018-11-13 15:03 #
“The first thing you need to do is spark an idea for [what you want to see]… because everything flows from culture.” :+1: |
|
|
Tudor Girba
2018-11-13 14:54 #
I just watched that video. Very nice tour. It shows quite nicely the idea of moldable-development based on the first generation of GT that we created and that is now part of Pharo. |
|
|
Tudor Girba
2018-11-13 14:53 #
:slightly_smiling_face: |
|
|
Shalabh
2018-11-13 14:52 #
https://www.youtube.com/watch?v=baxtyeFVn3w |
|
|
Nick Fox-Gieg
2018-11-13 09:58 #
!channel Just started a new #of-graphics channel for folks interested in talking about new languages and, er, graphics. Caveat I'm coming from a fine arts background and haven't fully developed a vocabulary for this yet--but I'm thinking a couple recent developments (realtime raytracing, 6DoF controllers, depth-aware ML) make this an interesting moment to think experimentally. |
|
|
Joe Trellick
2018-11-12 23:32 #
Interesting work from Cloudflare in running customer computations using V8: https://blog.cloudflare.com/cloud-computing-without-containers/ I tend to believe that the sheer amount of investment in browser execution contexts will make JS/WASM the most interesting platform on which to build future computing models |
| 7 comments | |
|
|
Caleb Helbling
2018-11-11 09:05 #
The problem with OOP: everyone is so focused on building programs by modelling dogs and mammals, but they missed the fact that programs are more like verbs instead of nouns. |
| 7 comments | |
|
|
Corey Montella
2018-11-10 12:14 #
So we can all thank Steve for that, because otherwise no one would have seen it :slightly_smiling_face: |
| 1 comments | |
|
|
Corey Montella
2018-11-10 12:13 #
Chris' Eve talk got a little play on HN today: https://news.ycombinator.com/item?id=18409836 |
|
|
Stefan Lesser
2018-11-10 03:23 #
http://www.rntz.net/post/against-software-development.html |
|
|
Roben Kleene
2018-11-09 08:28 #
Smalltalk comes up a lot in this community so I'd like to learn more about it. Does anyone have favorite resources for learning about Smalltalk? Presentations, blog posts, podcasts or anything else are all welcome. Thanks! |
| 47 comments | |
|
|
Joe Trellick
2018-11-09 00:40 #
Thanks so much for posting the LIVE talks, @Steve Krouse! I listened to the Chris Granger talk yesterday, and it was an incredibly valuable honest look at the development process and struggles. It made me wonder if anyone’s put together a summary of different successful programming languages & environments and where they came from—my gut feel is very few if any were the focus of a startup, but rather came about from academia, hobbyists, or from big orgs that could afford a long gestation (e.g. Swift, Go) |
| 5 comments | |
|
|
William Taysom
2018-11-08 22:41 #
@Nick Smith Started a thread. Seems like the better way to carry on the topical conversation. (I can't say I know how to use Slack.) |
| 51 comments | |
|
|
Nick Smith
2018-11-08 22:41 #
Why not Haskell? Because the academic community have made it unlearnable. It's a research artifact. |
|
|
Nick Smith
2018-11-08 22:41 #
Why not VLPs? Because that usually means "boxes and arrows", and there's nothing about that that makes programming inherently easier. On the contrary, it's often used to represent the same old code architectures but in a more verbose manner. |
|
|
Nick Smith
2018-11-08 22:39 #
Why not Smalltalk? Because I fundamentally disagree that OOP can lead to good code architecture. |
|
|
Nick Smith
2018-11-08 22:39 #
Why not lisp? IMO because there is nothing about Lisp that actually makes code easy to read and write (versus other common languages). |
|
|
Gregg Tavares
2018-11-08 21:53 #
I'm going to guess this question has been brought up before and maybe you have some links to some great talks on this kind of stuff but ... I'm watching an Alan Kay talk and sometimes I can't help but wonder if maybe the reason everyone isn't use Smalltalk or Lisp or Haskell or some Visual programming Environment is not because they are all stupid but because those systems actually have other problems. I can give the example of my experience of Lisp. I wrote some incredible macros that would sort data at compile time to be cache friendly but that also meant anyone who wanted to use my code had to understand my macros. Maybe that's not fair since to use anything you have to understand it but it just got me wondering, like I know I feel more productive in JavaScript (usually) than say C# but I think that's probably because I'm writing relatively small things that are all in my head. As soon as I was on a team I'd want a typed language since it would help spread the knowledge of how things work? Smalltalk often mentions the entire environment is written in smalltalk and modifiable live. That sounds great for experimenting but horrible for every day use. Imaging running stpm (smalltalk package manager) and having no idea how much of your environment was just modified. To make this topic too big, have any of you written an algorithm in a visual programming environment? For example A* or some rectangle packing algorithm. Anyway, just curious if you know papers on why not lisp, why not smalltalk, why not VLPs, why not haskell, etc.. |
| 50 comments | |
|
|
Steve Krouse
2018-11-08 07:53 #
Here's all LIVE 2018 organized https://futureofcoding.org/notes/live/2018 |
|
|
Caleb Helbling
2018-11-08 07:26 #
I just created a #in-boston channel. I'm thinking about organizing a Meetup and putting it on meetup.com |
|
|
Mariano Guerra
2018-11-07 10:09 #
http://inessential.com/2018/10/15/why_create_a_frontier_inspired_scripting |
| 1 comments | |
|
|
Ruben Nic
2018-11-07 08:34 #
Here is the last version of Eve mentioned by Chris: (The “Mobile Modeling” one.) https://www.youtube.com/watch?v=AIKfqHVY2m4 |
|
|
Steve Krouse
2018-11-07 04:20 #
Chris Granger's talk is in three parts. Unfortunately I am struggling with an audio sync issue for parts 1 & 2 so I recommend waiting until that's resolved until watching but I'll leave that decision up to you. (The lighting in part 3 is so bad that any audio issues would be undetectable.) https://www.youtube.com/watch?v=WT2CMS0MxJ0 (part 1) https://www.youtube.com/watch?v=ThjFFDwOXok (part 2) https://youtu.be/_NAakzkdbvI?t=1241 (extra Q&A) |
| 1 comments | |
|
|
Mariano Guerra
2018-11-07 03:42 #
@Joshua Horowitz I'm watching the video of your talk and I can't see the screen, is there any online resource about PANE? |
| 2 comments | |
|
|
Nick Smith
2018-11-06 15:50 #
You're a hero Steve! :stuck_out_tongue: |
|
|
Corey Montella
2018-11-06 14:37 #
Thanks for the video feed Steve, it was great watching everyone's work |
|
|
Corey Montella
2018-11-06 14:29 #
I can't fathom in a room full of top-notch programmers we can't throw together a good solution! |
|
|
Corey Montella
2018-11-06 14:27 #
lol "We need to record this next time" "Well, maybe we could do it on the down low and not ask permission" |
|
|
Steve Krouse
2018-11-06 10:33 #
Here's the continuation after lunch... https://www.youtube.com/watch?v=0V0TIu_tW48 |
|
|
Ruben Nic
2018-11-06 09:48 #
Thanks so much for recording these @Steve Krouse! Do you have a place where I can donate to your work? (Also maybe have Chris on the podcast sometime?) |
| 2 comments | |
|
|
Corey Montella
2018-11-06 08:12 #
cool, awesome! |
|
|
Steve Krouse
2018-11-06 08:07 #
I'll upload it later |
|
|
Steve Krouse
2018-11-06 08:07 #
Yes I did! I recorded it locally because I was unsure about Youtube streaming but it seems robust |
|
|
Corey Montella
2018-11-06 08:06 #
Thanks for the live stream, this is great :slightly_smiling_face: |
|
|
Corey Montella
2018-11-06 08:06 #
Did you manage to capture Chris' talk? I saw you got the Q&A |
|
|
Steve Krouse
2018-11-06 07:34 #
I've got my phone up as an unofficial live stream of LIVE 2018 https://www.youtube.com/watch?v=Kp6YqmMxqKA |
|
|
Steve Krouse
2018-11-05 20:58 #
This looks awesome! Very in line with the vision for programming @Kartik Agaram and I share https://anymod.com/ |
|
|
James Koppel
2018-11-05 14:58 #
I think Blaine Bell's demo/poster would be pretty interesting to this crowd |
|
|
James Koppel
2018-11-05 13:21 #
Who else is at SPLASH? @Steve Krouse |
| 3 comments | |
|
|
Jesse Aldridge
2018-11-02 17:00 #
Excel is the best IDE: https://docs.google.com/spreadsheets/d/1IkPlnH6G58JDFhjq4veP… |
|
|
Stephen De Gabrielle
2018-11-02 15:14 #
Isn’t there a Haskell window manager for Linux. Maybe that? |
| 1 comments | |
|
|
Stephen De Gabrielle
2018-11-02 15:12 #
This is new https://github.com/boydm/scenic/blob/master/README.md |
|
|
Mariano Guerra
2018-11-02 14:54 #
the ones I've seen tend to depend a lot on local state and mutation, I'm going the other way, global state and immutability, it may be hard to find something related :confused: |
| 2 comments | |
|
|
Stephen De Gabrielle
2018-11-02 14:52 #
I don’t know if https://en.m.wikipedia.org/wiki/Morphic_(software) uses any different techniques but it might be worth a look at the Squeak, Pharo, Self or Lively Kernel versions. |
|
|
Stephen De Gabrielle
2018-11-02 14:47 #
Or you could look at techniques used in ‘immediate mode’ UI’s |
|
|
Stephen De Gabrielle
2018-11-02 14:45 #
There is HMVC https://en.m.wikipedia.org/wiki/Hierarchical_model–view–controller |
|
|
Mariano Guerra
2018-11-02 12:10 #
what words do I have to type in google to read more about this? |
|
|
Mariano Guerra
2018-11-02 12:10 #
is there any other type of application event system in UIs other than the bubbling event system in the dom or "do it yourself" like in gtk? |
|
|
Stephen De Gabrielle
2018-11-02 08:17 #
I answered a question about Racket on reddit - please let me know if I got anything wrong. https://www.reddit.com/r/Racket/comments/9td40m/why_not_use_… |
|
|
Adam Marks
2018-10-31 16:51 #
Edward must be bummed that software is still mostly made by "guess and test". |
|
|
Adam Marks
2018-10-31 16:50 #
Gotta love the retro-future sound of the title here in 2018 :] |
|
|
Adam Marks
2018-10-31 16:49 #
Skimmed this book and found it rather unusual and exciting: http://a.co/d/77CwZWQ Does anyone know anything about the author, Edward Cohen? Can't find him on the internet, except for references to this book. |
| 1 comments | |
|
|
Corey Montella
2018-10-31 09:06 #
Has anyone used this? http://cdl-lang.org |
| 4 comments | |
|
|
Joel Jakubovic
2018-10-30 11:18 #
Hey, who's going to SPLASHcon next week? (apart from me) |
|
|
Kartik Agaram
2018-10-29 22:24 #
Interesting post by @James Koppel: http://www.pathsensitive.com/2018/10/book-review-philosophy-of-software.html |
| # |
USLACKBOT
2018-10-29 08:29 #
This message was deleted. |
| 7 comments | |
|
|
Chris Knott
2018-10-29 02:28 #
^ that's me |
| 4 comments | |
|
|
Felix Kohlgrüber
2018-10-29 02:01 #
I just found "Algojammer", a Bret Victor-inspired code editor for python programs: https://github.com/ChrisKnott/Algojammer |
|
|
Gregg Tavares
2018-10-28 00:00 #
Dynamicland made me wonder if there are any, um, ah, input/output standards out there that have been used to do some of the things seen at Dynamicland. Would be relatively easy to write. Just wondering if it already exists. Here's a video of what I saw. Not sure how clear it will be out of context https://www.youtube.com/watch?v=FtPOLzXtYIU In any case, one of the things in that video is how inputs and outputs are available from other programs. So for example they connect a "dial" program and use it to dial up the speed of the simulation (actually I think they dialed down the per frame delay). They also had displays displaying number of sheep or number of plants. As well as dials for birth rate etc, and the graph. So, that seems like a useful thing outside Dynamicland. Make various programs and they advertise their inputs and outputs. You can imagine for that plant-sheep-wolf sim as inputs their might be
etc. I suppose outputs are just readonly inputs so no need to separate the two. Anyway, the idea is you could build various kinds of inputs and displays. Example: You write a USB Midi input controller and then plug in any midi device and it auto assigns inputs to dials/sliders/buttons. (and of course somewhere you can set which ones go to which). You make a USB DAC Analog VU meter and plug it in and it takes the first unread output and displays it on the VU meter. You make some UI APP on a phone or tablet, connect it to the program over wifi and it presents various sliders, and or readouts etc. That seems like systems like that have to already exist. It would be nice to be able to write various programs with no UI, just declare the data and you get a UI for free. This happens in C# with the property inspector and it happens in Unity for example but disconnect it slightly more so the displays of properties and the editing of properties can happen externally to the program using those properties. Anyone know of such projects? Of course I can already see lots of issues. You want specific sliders or specific knobs or specific tablets to control specific inputs so it takes time to go and for each input or display configure it to work with the specific value you want. That's kind of solved at Dynamicland with the little lines poking out. The problem though is there's only room for so many of those lines so if your simulation has 50 settings you're kind of out of luck. |
| 16 comments | |
|
|
Shalabh
2018-10-26 13:17 #
Lambu's submission to LIVE 2018 |
|
|
Shalabh
2018-10-26 13:16 #
https://www.youtube.com/watch?v=skhP6LcbRTs |
| 5 comments | |
|
|
Daniel Garcia
2018-10-25 18:52 #
I just listened this podcast https://reactpodcast.com/26. Might be boring the beginning for people not interested in design or frontend development. But the second half has interesting ideas: - How to write code that survives technology trends. Not siloing it would be a great way to start, like writing CSS in JS could be a problem later. - Great hearing the perspective of a designer on programming. |
|
|
Gregg Tavares
2018-10-24 22:30 #
I should probably write to Sourcegraph about his but listening to the podcast here was how my thought process went for me PC: Sourcegraph tells you stuff Me: Hmm, My IDE already does that PC: We use plugins Me: VSCode already does that and lots of editors are adding support. So? PC: We scanned all of github Me: K, sounds a little useful but like Steve said searching on github sucks, why is yours better PC: We can scan your entire company's projects so you can find usage and code Me: Okay, that might be useful if I worked at a company but at the moment I'm a one man band PC: There's a plugin for github with 27k repos scanned already Me: Hmm, I'll at least check that out. Man, I'm not doing a good job of explaining how my thoughts went. I don't remember where or why I switched from sceptical to interest peaked but I did. BUT..... Then I went to spread the love. I go paste links to their site and their chrome extension in another slack. I'm met with the same scepticism and I have zero ideas about how to convey anything that would get the other devs to even look. I go on the Sourcegraph site, nothing. I search for Sourcegraph vs IDEs, there's one about vs IntelliJ from stackshare. In that Intelli-j trounces sourcegraph (it's a popularity contest though) The idea of write once use everywhere is appealing to the engineer in me but I only use a couple of editors in every day use. They really need a "why sourcegraph is better than your IDE" page with concrete examples of where sourcegraph did something I actually need to do. When I was on the chromium team their code search (https://cs.chromium.org/) was super useful but I'm not working on anything that big at the moment. So, "why sourcegraph is better than my IDE?" and, for the browser plugin, what are some concrete examples of things I would actually do with it? |
| 6 comments | |
|
|
Steve Krouse
2018-10-24 00:09 #
Anyone here familiar with Conal Elliot's "denotational design"? I'm trying to use that methodology to prototype an extension to FRP that allows for "backend data", which would allow for webapps with logins, saved state, and collaborative use. I've been finding it difficult to follow the methodology alone. Would anyone be willing to be a denotational design partner for a couple hours? (Of course, I'd be willing to trade and be a thought partner in any project of your choosing.) |
| 4 comments | |
|
|
Daniel Garcia
2018-10-23 21:42 #
Sketch-n-Sketch is super cool, here is a really recent talk https://www.youtube.com/watch?v=-TFL6E1uSHE&list=PLglJM3… |
|
|
Daniel Garcia
2018-10-22 21:23 #
I just found HANDS http://john.pane.net/HANDS/HANDS.MPG. Has anyone seen it before? What are your thoughts about it? Here is the link to the website https://john.pane.net/research.html |
| 19 comments | |
|
|
Stefan Lesser
2018-10-19 11:46 #
I know I read about it here, but my search skills are apparently not good enough to find it either here in the Slack or on the web — what was that visual tool again that uses state charts as its core abstraction to help generating code for UI and making sure all possible states are specified and tested? |
| 4 comments | |
|
|
Dan Miller
2018-10-18 07:51 #
Are there any good materials on the history of dev tools, distinct from programming languages? Like how debuggers have evolved? Or simple things like “task managers through the ages”? Closest I’ve found is Two-Bit History https://twobithistory.org/2018/07/07/cvs.html which is great but I’m interested in learning more. :slightly_smiling_face: |
| 6 comments | |
|
|
Vladimir Gordeev
2018-10-17 12:31 #
@Shalabh and others. I was thinking about subject of your article. Here are some thoughts that I haven't yet enough time to prototype (recently even weekends are packed), yet I think you and others may find interesting. Assumption: actors with isolation (like in Erlang) might be really good abstraction to shape systems. 1) Any applications is just bunch of actors that spawn children, send and receive messages from/to each other. 2) If actors depend only from their input (received messages), then we can have live time-travel code editing. We can record all IO for processes, select moment in the middle, change code of process and start execution again. Create a new branch of history. 2.1) But this is not always possible. There must be actors which depend not only on their input: e.g. file handlers, sockets, OS timer. Similar to pure and dirty functions, we also have pure (processes) and dirty (ports) actors. Processes can go back in time and start new branch of exection (with different code). Ports cannot -- they terminate and supposed to be restarted by system. Interesting, but looks like code for process might be in any PL, as long as it fits into behavior of process. 3) Supervisor config in Erlang and kubernetes config for services are awfully similar. Can we manage instances of applications the same way we manage little processes inside application? Probably there must be third kind of actors: a remote instance. Remote instances are similar enough to ports and processes to be managed by same supervisor code, yet they behave differently: This very fact that you can have everything in single system, is really powerful. |
| 1 comments | |
|
|
James Koppel
2018-10-16 13:42 #
Thanks! :slightly_smiling_face: |
|
|
Shalabh
2018-10-16 10:55 #
Just watched a great Strange Loop talk by @James Koppel: https://www.youtube.com/watch?v=ldkF-4WNZqA |
| 3 comments | |
|
|
Kartik Agaram
2018-10-14 08:47 #
While I disagree with @William Taysom's comment about the monetization angle being unimportant, the observation of relative scale of YouTube and GitHub is extremely relevant here, and also to the side thread on business models and supply chains (https://futureprogramming.slack.com/archives/C5T9GPWFL/p1539470382000100; thanks @Stefan Lesser for engaging with me). As non-monetary concerns grow in importance, it becomes harder to reason about those concerns. I think that imposes a limit on how complex business models can get if you also care about the quality of creation (particularly for 'soft' products like videos or software), or about things like ethical sourcing and CO2 emissions. Modern supply chains are incredibly complex: https://logicmag.io/04-see-no-evil. Hard to imagine they come out unscathed if we start caring about more than money. The recent fracas about SoftMicro and hardware security is another example here. |
| 3 comments | |
|
|
Gregg Tavares
2018-10-14 01:22 #
let me also add there's a "spirit of giving". I contribute to open source for free because I've received so many other open source things for free. I get that some projects need funding like say openssl but I recently managed to get a contract to do some open source work and I feel like I can't mention I'm getting paid otherwise contributors might feel like not contributing unless they also get paid. maybe that's fair but it does point out yet another complication |
|
|
William Taysom
2018-10-14 01:00 #
And if that's the case, then perhaps Stack Overflow is the real marketplace. |
|
|
William Taysom
2018-10-14 01:00 #
@Gregg Tavares YouTube is a bit bigger than GitHub and has monetization and recommendation and – most importantly – is engaging in a fundamentally different way. Perhaps the common element is that they are online platforms were people put stuff. (This does make them a little less similar to online platforms where people primarily do stuff e.g. play games or discuss stuff e.g. right here). I'd claim that monetization is less important than the other differences. Now about you Unity plugin, this is perfect example of how a dollar isn't worth a dollar and how cost/benefit tradeoffs lead to sort of market failure, at least a dollar priced market failure: the responsibility of accepting just isn't worth it $5-$25. For example I think the primary way people "pay" for Open Source libraries is in dedicating their attention to learn and use them. |
|
|
Gregg Tavares
2018-10-13 23:51 #
as for the YouTube example I don't know what would fix it. Im just comparing GitHub to Youtube. On GitHub I see mostly love and sharing and on YouTube I see people posting junk for money. If you added money to GitHub in the wrong way you might get more of the effects seen on YouTube. People trying to game the ratings and stars so they get the most downloads and therefore the most money. Of course that's not the only way to use money to support open source. I feel also like often open source is like volunteering. I get paid in the good feelings I get from sharing solutions. The moment I get paid those good feelings disappear as it's just a job for hire. I also make stuff open source because the market won't bare the cost and that the price people are willing to pay they ask for 10x in support and having taken their money I will feel obligated to give it to them. This is my impression of much of the Unity plugin market. I could charge between $5 and $25 for my plugin because that's all the market will bare given 95% of it is high school students , college students , and starving indie devs. But, in doing so I'd be expected to provide $100-$200 in support in particular because those customers are inexperienced programmers and so don't get how to use the plugin and effectively want my to write their game. |
|
|
Stefan Lesser
2018-10-13 15:46 #
@Gregg Tavares I’m optimistic that we will leave behind the desktop/laptop form factor and find better ways of communicating with our technology, partly through becoming that technology ourselves. I agree that even the latest current smartphones do not provide a better experience, but within the next five years we will learn how to use our hands, eyes, and voice in more and more effective ways to interact with our technology that will make us look back on keyboards with the same nostalgic feeling that we today look back on punching holes into cards to tell computers what to do. I know that’s very hard to believe right now, but it was very hard to believe just ten years ago that we are carrying more powerful computers in our pockets than we then had on our desks. |
|
|
Stefan Lesser
2018-10-13 15:39 #
@Kartik Agaram Interesting. I’m trying to wrap my head around tasks where extrinsic incentives work well according to your definition — do you have an example for what you had in mind? And if I understand you correctly, you mean that writing software does not fall into that category? Does that mean you are arguing software shouldn’t be sold (for money)? And I have to admit that you lost me at the end with passion and motivation… to me it sounds like the best word for what you describe is trust. But I’m not sure where that connects to the original thought about money. Going back to @Gregg Tavares’s YouTube example: I think “YouTube would be 1000x better without money” triggered my response, because I think it’s very easy to make the mistake of only seeing the negative side of money, the corruption, the misguided incentives (based on making money over delivering value), and all the business-types who show up that we’d rather like to stay home. But that’s unfortunately how markets work. If there is value, people will come and try to exploit that. But it also paves the way and breaks down barriers of entry for everyone, making it possible for real value creators and those who just want to express themselves to contribute. The money amplifies or accelerates both the good and the bad parts. One comes with the other. Even if we’d only like to have the good parts. |
| 11 comments | |
|
|
Kartik Agaram
2018-10-13 12:10 #
> If you consider the “current implementation” something that is inherently bad for some reason, I’d love for you to elaborate why that is. Not inherently bad (I still don't know where you're getting that from) but inherently a bad fit for certain purposes. Like the ones we've discussed here: incentivizing creators on Youtube or on open source projects. My rough rule of thumb is that if it's a task where someone (any other person on the planet excluding the one performing the task) can come along afterwards and say objectively that the task was done well or not, and the ruling is not subject to change in the future, then money and similar extrinsic incentives[1] work well. But if it's a task that's impossible to verify then you end up needing to rely on intrinsic motivation[2]. It's impossible for a manager or user to tell if a software project is good. It can seem to do the task but turn out to be infected with malware. It may be fine initially but get an automatic update that is user hostile. With these possibilities I no longer feel secure just paying dollars for a product. I need to know who built it and get a sense for their motivations. I need to build a relationship with them. Hopefully this clarifies where I'm coming from. [1] https://en.wikipedia.org/wiki/Motivation#Incentive_theories:… [2] This is why professing "passion" for a job is a thing that happens. Employers know they have a task that requires intrinsic motivation, and employees know that employers know. |
|
|
Kartik Agaram
2018-10-13 11:48 #
I agree with all that. I'm not sure why you think saying "the money ruined x" is is the same as saying "money is bad". They seem very different statements to me. We're just describing the misuse of a tool. Like "the haircut was going great, but the #3 scissors ruined it". |
|
|
Stefan Lesser
2018-10-13 11:28 #
@Kartik Agaram I consider money a tool. Like a knife. You can take a knife and cut bread with it and give it to a homeless person. Or you can stab the homeless person. Same tool. Very different outcomes. The problem isn’t the tool (knives/money), but how you use it. If you say “tool is bad” you’re using a rhetoric trick of charging something neutral with meaning (negative or positive — works in both directions) that is done all the time, whether you are aware of it/doing it intentionally or not. I don’t understand what you mean by “current implementation of money” and why I’m using a “more general” meaning. I’m talking about money as the universally accepted medium to exchange and store value, including all its good and bad uses. If you consider the “current implementation” something that is inherently bad for some reason, I’d love for you to elaborate why that is. That said and putting this probably not too relevant linguistic hair-splitting aside, I absolutely agree that thinking about incentives, and consequences, and values is something our industry specifically needs to learn and get a lot better at. |
|
|
Kartik Agaram
2018-10-13 11:00 #
@Gregg Tavares I tried to say the same thing at https://futureprogramming.slack.com/archives/C5T9GPWFL/p1538877649000100 but not nearly as well! @Stefan Lesser I think it's perfectly reasonable to say "money ruined x" for some tightly scoped x. It may be because Gregg and I think of money as "the current implementation of money" where you're seeing it as something more general. If I'm right, can you elaborate on where the boundary is between "money" and other sorts of incentives? This feels like an important subject. I think it's impossible to discuss "the future of programming" without facing up to the dysfunctional incentives that have led to the current state of programming. |
|
|
Gregg Tavares
2018-10-13 03:41 #
as.for.open source my first open source started in the early 90s for purely selfish reasons. I had a bunch of C libraries I wanted to be able to use at my job but without them taking ownership. I didn't need/want them to pay me for the libraries I just wanted to make my life easier. I have a friend who has a very popular open source library . popular enough it's nearly a full time job maintaining it. fortunately he got hired by Google to maintain it but he's been "stuck" with it for like 8 years now. He might enjoy that but I can't imagine myself enjoying feeling stuck on one project so long. |
|
|
Gregg Tavares
2018-10-13 03:26 #
do you think that day will ever actually come? I feel like until it can read my mind and type for me no phone text input is ever going to be very good. I rage daily trying to enter stuff on my phone :cry: |
|
|
William Taysom
2018-10-13 03:06 #
Incentives! |
|
|
Steve Krouse
2018-10-13 02:41 #
(Ironically I only did transcripts when I got paid for them :stuck_out_tongue_closed_eyes:) |
|
|
William Taysom
2018-10-13 02:40 #
(Wow, you have transcripts!) "I'm not going to do that just because it's fun. I'm going to do it because I'm getting paid to do it." — Or for many it's getting paid enough to keep doing the it that is rewarding in other ways. (Guess I know a lot of teachers.) As for the TubeBooks of the world, they do make for a case study in incentive structures though as much a warning as an ideal. |
|
|
Stefan Lesser
2018-10-13 02:18 #
Totally unrelated side-note: We know we made progress when people no longer say “Sorry I’m on my phone” but “Sorry, had to use my computer”. :joy: |
|
|
Steve Krouse
2018-10-13 01:51 #
Yeah I wish we went into that topic more as well: thehe darker side of financial success in open source. Here's where I brought up that topic a bit and we touch on it a tad in the following paragraphs but we don't go into it too much https://futureofcoding.org/episodes/31#109 |
|
|
Gregg Tavares
2018-10-13 01:43 #
yes sorry I'm on my phone..I certainly think important projects should be funded. I guess I'm more concerned how that funding happens. projects x started free , got popular , then needs funding sounds great. peole pitxhing for money for brand new projects sounds scaryier |
|
|
Stefan Lesser
2018-10-13 01:32 #
And now I should probably listen to the podcast and find out if I’m prematurely arguing because that’s the root of all… conflict…? |
|
|
Stefan Lesser
2018-10-13 01:30 #
I have yet to listen to the podcast, but I don’t think it’s as easy as saying “money ruined x”. We live in a capitalist world, and that means a lot of things are driven by money. This can be good and bad. I do agree that there are some ways where money is used in the wrong and dangerous ways. Often it’s the business model that creates unintended consequences. YouTube (and Facebook) are broken because the ad model sets wrong incentives, so we ruined privacy and have algorithms that keep people in their bubbles or worse show them more extreme stuff. The App Store and Play Store are broken because they set expectations that you can get good value for free and they devalued good work. US politics is broken because of lobbying and the way campaigning works, shifting power to the wealthy. But that’s all not just purely because money exists, but because of the way it is used. At the end of the day, there needs to be some money coming from somewhere if you want to do anything sustainable. Even open source projects where people spend just their free time, these people need to feel secure enough to sustain their daily lives and have the money for that. Nobody would count that into the cost of their project, but if that money disappears, for sure their priorities would change quickly. So I wouldn’t want to say let’s keep money out of open source, because it’s already there anyway, even if we can’t see it directly. I do however support thinking hard about the impact certain funding models might have, especially in terms of unintended consequences. |
|
|
Gregg Tavares
2018-10-13 00:55 #
Listening to the lastest podcast: Sustaining the Underfunded and a few comments A few random comments the first was I was surprised no discussion about how money might ruin open source. my example would be I have this fiction that YouTube has ruined certain things. I go there and it feels like a dumpster fire of random people trying to make their random channel which seem to be mostly trying to chase money . Like I feel like youtube would be 1000x better if there was no money. I'm probably wrong and I certainly enjoy a few good channels but the bad outweight the good. As a good (bad) example I found a large set of music mix channels that are just girls in bikinis in the tropics set to random mixes. There's nothing wrong with that idea until I realized all the mixes are basically the same music and even the clips are the same clips. u wouldnt doubt that it's auto generated. As another example the WatchMojo channel which is like linkbait videos . just ever random topic they can think of and I don't think either of those would exist with YouTube wasn't paying rev share. so ... with open source , imagine a fund existed. I'd expect at some point people would try to game the fund? |
|
|
Corey Montella
2018-10-12 12:31 #
"Debugging Distributed Systems with Why-Across-Time Provenance" -> https://mwhittaker.github.io/publications/wat_SOCC18.pdf https://news.ycombinator.com/item?id=18193921 |
| 1 comments | |
|
|
Niko Autio
2018-10-10 13:16 #
First Strange Loop conference videos are just arrived. https://www.youtube.com/channel/UC_QIfHvN9auy2CoOdSfMWDw/videos |
|
|
Shalabh
2018-10-10 13:01 #
Stumbled upon this: http://symbolflux.com/writing. Much interesting stuff related to some discussions here (programs as not text, as graphs etc.) |
| 6 comments | |
|
|
Corey Montella
2018-10-08 14:29 #
> The server is in-house, written in C and C++ and (at this moment) closed source. :disappointed: |
|
|
Steve Krouse
2018-10-08 14:24 #
This Alan data language looks neat! https://news.ycombinator.com/item?id=18166538 |
| 2 comments | |
|
|
Shalabh
2018-10-08 13:30 #
http://tomasp.net/blog/2018/programming-interaction/ |
| 28 comments | |
|
|
Mariano Guerra
2018-10-08 03:47 #
not sure how your representation works, but most compilers usually compile to a graph representation for the optimization passes, you could start here to see if there's something you find useful: https://en.wikipedia.org/wiki/Static_single_assignment_form |
| 19 comments | |
|
|
Vladimir Gordeev
2018-10-08 03:30 #
I'm developing this idea about a homoiconic language that is encoded in a graph (no text required). This idea looks so beautiful, and so obvious, that I expected that it's already well developed in academia. I googled for papers, and didn't found much. Do you know any related projects or papers? Do you think it's worth writing about, putting it in the form of academic paper? If so, where it could be published, given that paper is good and I don't have academic background? I want to start academic career eventually. This could be a first step. PS: I know that @Nikolas Martens works on something related, but different. |
| 5 comments | |
|
|
Steve Krouse
2018-10-08 00:47 #
Another related article (about node and wire visual languages) on HN yesterday: https://news.ycombinator.com/item?id=18161248 |
| 1 comments | |
| # |
Kartik Agaram
2018-10-06 19:44 #
cleared channel topic |
|
|
Kartik Agaram
2018-10-06 19:42 #
Clarification: the metaphor of a war isn't intended to emphasize hostility. The key characteristic I'm trying to point out is that allies in a war often want different things. Whereas workers in a factory used to have so few degrees of freedom that they could be considered aligned for all practical purposes, the relationship between software vendors and their users offers so many more degrees of freedom that "let me pay you to build this for me" starts seeming naive and clueless. I believe when we started giving software away for free, we released a genie out of a bottle that is never going back in. And arguably it shouldn't; FOSS has given us many boons. But it requires a fundamentally different way to think about things. In a world where your money is no good, you need to find other ways to organize. Ok, I'll shut up now :confused: |
|
|
Kartik Agaram
2018-10-06 19:10 #
One test for whether something is reducible to money is: can you get equivalent results by paying someone vs finding someone directly involved. When it comes to giving feedback, the answer is no. And so it is, I'm increasingly convinced, with writing software in general. I don't have a solution to involve non-programmers. But it seems far more straightforward for us programmers to be more involved in the libraries we develop atop. |
|
|
Kartik Agaram
2018-10-06 19:06 #
Governance on open source projects is a big problem. Consider Chrome, which is nominally open source but does more and more sketchy things. This is a general pattern. As you get more users you gain in leverage, and the temptation to use your leverage in short-term ways. That is unproductive in the long run for all concerned. Users eventually route around rot, that's how companies eventually grow irrelevant. And routing around companies takes a lot of effort that could be used elsewhere. Why not attack the problem at its source: the Principal Agent problem. More broad-based involvement would lead to a more healthy, less toxic relationship for both sides. |
|
|
Kartik Agaram
2018-10-06 19:00 #
No, don't think of it as labor. Think of it as participation. Would you trade your vote for dollars? I argue it would be a perversion. They're incommensurable resources. |
|
|
James Koppel
2018-10-06 18:59 #
Why the hesitation to use it? |
|
|
James Koppel
2018-10-06 18:59 #
Money is one of the greatest inventions in history. It removed the need for complicated barter agreements in favor of everyone doing what they’re best at and getting what they want |
|
|
James Koppel
2018-10-06 18:58 #
' |
|
|
James Koppel
2018-10-06 18:58 #
Usually, when I’m faced with an agreement like that, I’m like “I don’t want to do that; can I just pay you instead? |
|
|
James Koppel
2018-10-06 18:57 #
Interesting; so you’re basically asking users to pay in labor in exchange for a “we won’t break you” promise + other goodies |
| 1 comments | |
|
|
Kartik Agaram
2018-10-06 16:10 #
"An initiative I've been toying with for a while is trying to convince a bunch of open-source tool developers to refuse to give away their stuff for free, in hopes of breaking this feedback cycle and getting a more functioning tools industry. But that's something I'm not sure will work." Interesting idea, @James Koppel (https://futureofcoding.org/episodes/30) On a tangent, I've been mulling for some time an open source project that explicitly privileges contributors over other non-participating users. Here's a draft from a few months ago: http://akkartik.name/post/cil |
|
|
Kartik Agaram
2018-10-06 15:14 #
Looks like this was the HN thread about Eve on FoC: https://news.ycombinator.com/item?id=16736913. Comments actually don't seem too bad. |
|
|
Corey Montella
2018-10-05 13:30 #
In related news, this was on HN yesterday. We like to talk about the "future" of coding, but from my experience, a lot of the ideas we talk about can be found in the "past" of coding like in the synchronous languages mentioned here: https://news.ycombinator.com/item?id=18141375 |
| 1 comments | |
|
|
Corey Montella
2018-10-05 12:47 #
The response is usually on the lines of "Well I program all day everyday and I don't see anything wrong with it!" |
|
|
Corey Montella
2018-10-05 12:47 #
But for a wider audience, you spend most of your time convincing them there's something even wrong with programming. |
|
|
Corey Montella
2018-10-05 12:47 #
Telling is fine for a smaller audience like the folks here, who at least get the premise. |
|
|
Corey Montella
2018-10-05 12:46 #
My tactic going forward is going to be show don't tell. We spent a lot of effort with Eve trying to tell to a wide audience, and I think that was misguided. |
|
|
Scott Anderson
2018-10-05 12:40 #
I found FoC through HN, I think it was through the essay on a Visual History of Eve |
|
|
Scott Anderson
2018-10-05 10:39 #
Middlebrow dismissal is the norm on HN. HN has been pretty positive about Dynamicland and can be optimistic about a lot of the stuff that FoC discusses, so I'm surprised FoC has had a bad reaction |
|
|
Corey Montella
2018-10-05 10:32 #
FoC stuff gets a very bad reaction on HN. It's pretty depressing. Everyone gets defensive because they feel their craft is threatened. |
|
|
James Koppel
2018-10-04 15:55 #
I’ve just submitted the last podcast episode (mine) to HN’s newest page. I think Steve and I would both appreciate your upvotes |
|
|
James Koppel
2018-10-04 15:55 #
I’m surprised to see not much FoC stuff has been submitted to HN. Seeing Steve mentioned in one of the comments there is what made me really start paying attention to him |
|
|
Felix Kohlgrüber
2018-10-03 14:35 #
I've lately been thinking that many problems in software development might be communication problems and not primarily related to the specific tools used. How often do people "reinvent the wheel" just because they don't know that there's a solution for their problem or because they aren't able to change a 90% solution to fit their needs? I'm thinking that changing the way people work together to produce programs could make a big difference. In particular, I find the idea of having a wikipedia-like platform for code very interesting. Some advantages could be the low barrier to contribute or that people could refactor similar parts of different projects to use the same general solution, therefore providing a "join" operation for the "fork" model that's common in OSS development. I've got more to say about this and I'll probably write a blog post about it, but before I do, I wanted to ask you guys if you know if anyone has done something similar before. Thanks :wink: |
| 15 comments | |
|
|
David Piepgrass
2018-10-03 09:48 #
I know that there is a C++-based tool out there somewhere that helps you optimize algorithms by letting you easily parallelize it and try various access patterns (e.g. tiling, swapping the inner and outer loop vars...) does anyone remember the name of this tool? |
| 5 comments | |
|
|
Steve Krouse
2018-10-03 05:04 #
Thanks to @Trenton Ashburn's suggestion, I added an auto-welcome message for new members, explaining what the channels are for (#introduce-yourself for introductions, #share-your-work for things you've created, #in-new-york and #in-london for meetups). If anyone !here is new, this feel free to join those channels |
| 2 comments | |
|
|
Brian Hempel
2018-10-02 12:03 #
Is anybody aware of any GUIs that try to replace bash? Surely someone has tried to GUI-ify the *nix command line soup to make it more palatable. |
| 2 comments | |
|
|
Peter Abrahamsen
2018-09-29 19:56 #
I was pretty excited about this project: http://hazel.org/ |
| 19 comments | |
|
|
Peter Abrahamsen
2018-09-29 19:54 #
Howdy from a Strange Loop straggler. |
|
|
Jonathan Edwards
2018-09-29 10:29 #
So how was Strange Loop? What were the hot topics? |
| 1 comments | |
|
|
Ivan Reese
2018-09-28 21:45 #
Also, new folks joining — Welcome! Head over to #introduce-yourself and let us know a bit about who you are and what you’re into. |
|
|
Ivan Reese
2018-09-28 21:44 #
@Ryan Williams @Leo Care to link to that Beyond Text group? Or was it just a thing for folks at Strange Loop this year? |
| 4 comments | |
|
|
Trenton Ashburn
2018-09-28 21:33 #
Also - I'm based in Denver in case anyone else is here. I find myself in Boston, SF (recently for YC events), and NYC now and then too, and love to talk PLs. |
|
|
Trenton Ashburn
2018-09-28 21:29 #
Hi all. I was recently introduced to Steve. I see I've stumbled across some like-minded folks here (i.e. "programming can be so much better!!!"). Like many of you, I'm a gentleman scientist (https://nadiaeghbal.com/independent-research), tinkering with language ideas that I'd love to use with real work. I just scanned this channel for interesting ideas and links, have 40 tabs open, and wonder if I'll get any sleep tonight. :slightly_smiling_face: Nice to be here. |
| 2 comments | |
|
|
Ryan Williams
2018-09-28 21:14 #
same here. couldn't believe when i saw that slack channel at strangeloop, and equally excited to stumble upon this. i'm nyc-based and interested in meetups as well |
|
|
Leo
2018-09-28 21:03 #
Hi. Recruitee from StrangeLoop #beyond-text channel :slightly_smiling_face: Nice meeting you all |
|
|
William Taysom
2018-09-28 11:24 #
What fun. Matthias does begin, "Bret Victor inspired this thesis project." Was able to reproduce my favorite Logo program:
|
|
|
Ivan Reese
2018-09-28 10:33 #
{aside: You could also tie this in to 3d graphics. The key detail that allows for this tying-in is that turtle graphics creates paths with a defined start and end (obviously), but that's the same way SVG-like vectors (including Flash) and 3d polygonal graphics are represented. You might look at a complex vector or mesh with lots of T intersections and think "that's free-form", but (with the exception of Figma [https://www.figma.com]), that's actually not the case. Points in a path are ordered according to a fairly strict ruleset that could be cleanly mapped to a turtle graphic representation.} |
| 6 comments | |
|
|
Ivan Reese
2018-09-28 10:28 #
My first reaction to this was.. "I'd rather just drag vertices around, thank you very much." Then after giving it a moment to sink in, I realized.. this is actually quite powerful. In fact, it perfectly matches the abstraction behind SVG paths, so you could create this UI atop a traditional points-and-edges / bezier based vector graphics system as an alternative mode of interacting with the graphic. This approach is more structured, whereas the points-and-edges approach is more expressive. This might be a neat way to tie a toolset like Sketch or Illustrator into a structured graphical environment like Charticulator (https://charticulator.com) or Drawing Dynamic Visualizations (https://vimeo.com/66085662). |
| 2 comments | |
|
|
Ivan Reese
2018-09-28 10:24 #
http://mgrf.de/vogo/ |
|
|
Kelley Henry
2018-09-27 06:58 #
!here would love to see any women/nonbinary engineers at our Velocity happy hour here at Work-Bench this coming Monday! We're convening a great group of women+ including Velocity speakers & attendees in from out of town. Please pass on to any other women/nb devs in your network as well!! https://www.eventbrite.com/e/women-devs-velocity-happy-hour-tickets-50459804634 |
| 13 comments | |
|
|
Geoffrey Litt
2018-09-26 12:34 #
is anyone in this community at Strange Loop this year? If so let me know, would love to meet up! |
|
|
William Taysom
2018-09-26 06:29 #
Indeed, Schema Change has held my interest for quite a while now. It's a miracle that anything works. |
| 8 comments | |
|
|
Jonathan Edwards
2018-09-26 06:21 #
@William Taysom @Nick Smith Schema Change is a giant blind spot. I believe it requires both static types and structural editing, so it violates most people's ideologies. Conventional solution is to assume it's someone else's problem. |
|
|
Nick Smith
2018-09-26 05:51 #
@William Taysom I agree altering the code of a live system presents challenges. It also happens all the time in real-world systems (anything with a database) so I’m sure there’s some theories out there about how to do it gracefully :thinking_face: |
|
|
William Taysom
2018-09-26 05:08 #
@Nick Smith @Vladimir Gordeev Though the freedom afforded by a Smalltalk image is beautiful thing (Lisp too), it can go pretty strange for a long lived object as the codepath that lead to its current state can easily be edited away. My lesson is not that we should have more static and separated systems (though there is some virtue in them) rather Smalltalk's growth was stunted before sound dynamic semantics were realized. Of course, it's been a long while so perhaps some more recent developments have improved stability. |
|
|
Nick Smith
2018-09-26 03:04 #
|
|
|
William Taysom
2018-09-26 02:26 #
@Nick Smith The AR/VR/MR space has a certain UI possibility excitement that I haven't felt since being a kid in the 80s. (Online in the 90s and mobile were smaller blips.) I take the variety of dubious, beautifully awful VR experiences as a great sign. I'm sure we'll figure out how to "ruin" it, but the potential here? It's exciting and surprising. |
| 3 comments | |
|
|
Nick Smith
2018-09-26 01:02 #
Also, is anyone based in Australia? Nobody working on this stuff ever seems to be from Australia :stuck_out_tongue: |
| 2 comments | |
|
|
Nick Smith
2018-09-26 01:00 #
I’m curious: does anyone agree with the proposition that Elm (http://elm-lang.org/) has a pretty decent programming model and user experience which if matched with a “good” development environment can lead somewhere “future programmey”? I think it’s targeting the right platform (Web and soon WASM), is developed with the right mindset (extreme learnability) and using the right paradigms (purely functional programming and something close to the actor model). It is designed for producing GUI-based apps out of the box (abstractions over HTML/CSS) rather than printf-based terminal apps. What I feel it’s missing is integration with the “right” development environment (something like Light Table as a starting point). I’ve been thinking about what a “right” environment entails. After having contemplated “future programming” for around 3 years now, I don’t think that developing visual languages or augmenting text with visual widgets (i.e. working on how to present code) will get us very far. This has been tried for decades in many different forms and the ideas rarely hold up, so my hunch is that addressing challenges through visual representations is a dead end. The right kind of question to ask is perhaps: what does an effective development workflow look like? This hints that a focus on tools may be needed: for example instant feedback tools (how do I see what the thing I’m building actually does), code organisation tools (where do I put code and documentation, how do I keep track of history, and how do I find the right thing when I need it), sharing tools (how do I share libraries and how do I share applications), and collaboration tools (how do I work as part of a team). Importantly, the building blocks of a language are themselves tools for constructing programs. They’re the “obvious” thing that has been a central focus for decades but they remain an important consideration. So far I’ve been referring to things that many “Future of Programming” people have identified as desirable, but my own understanding of the Future of Programming involves technologies outside what we consider “programming tech” today: stuff like glasses-based AR for the interface (we’re headed beyond WIMP and the desktop metaphor; give it 5 years) and autonomous distributed systems as a computational material (“blockchains” but not as useless as existing ones: something close to the potential of https://dfinity.org/). All this stuff is out of our hands, but we should factor it all into our understanding of what tech is on the horizon and how it will affect how we might build programming editors and programs. Some of it could be game-changing. That’s my brain dump anyway. I’d be interested to hear where people agree and where your thoughts differ. |
| 27 comments | |
|
|
Ildar
2018-09-25 08:38 #
Has PLC programming been covered or brought up here? It's a very visual process with the program being essentially a diagram. Not useful in all applications but it seems like it works for the industries it is used in. |
| 5 comments | |
|
|
James Koppel
2018-09-24 13:47 #
@Joel Jakubovic While getting out of there may be the right idea long-term, if you want to focus on improving your current situation, there’s a lot you can do with communication and precision. Your coworkers may be more reasonable than you realize. Many people who shoot down proposals prematurely will respond better if you find common ground and make them want you to succeed, if you approach them 1-on-1 and get input early, etc. Those who jump to “this is overengineering” can be convinced if you can explain exactly what’s involved and exactly what future scenarios each choice will help/fail in, especially if you have a track record of successful prediction; one of my clients reported this happening. On overengineering: I recommend “What is Overengineering” by Max Kanat-Alexander. |
| 1 comments | |
|
|
Jonathan Edwards
2018-09-24 10:23 #
Congrats to @Steve Krouse for getting his paper accepted to the REBLS Workshop at SPLASH [https://futureofcoding.org/papers/comprehensible-frp/] Anyone else going to be at SPLASH? Registration is pricey but it is one of the places where people working on the interests of this group congregate (including my LIVE workshop) https://2018.splashcon.org/home |
| 6 comments | |
|
|
Joel Jakubovic
2018-09-24 01:37 #
My first priority is finding out whether I could earn a living from doing the work I love, which seems pretty research-y. I know that there are people here in academia, and others in full-time employment, some of whom do work unrelated to "Future of Programming" and yet others who somehow do...? Can I seek your advice about what possibilities are open to me, or at least a starting point for finding out? I can think of the following options: 1. Software isn't actually that bad, probably just the culture of the particular company you work in, try another place 2. Unfortunately many places are like this, but you should try companies that build programming tools / languages because they exist too 3. You really do sound like research would suit you better, so start by looking for programs related to "Software Creation Process", plain old PL research or even HCI 4. Other, obviously Any thoughts? |
| 11 comments | |
|
|
Joel Jakubovic
2018-09-24 01:37 #
Hey all, I'm having serious doubts about continuing in my job and because this community is essentially what I want to do for a living, please allow me to seek your advice. Sorry if the following suffers from flaws of tone or content, but better out than in. The other day I was writing some JSON validation boilerplate and I became quite stressed wondering if I picked the wrong career. And I've only been doing it for one year! I feel like I am wasting my time and not making use of the skills I have. Working as a software engineer doesn’t seem to be about “solving interesting problems”, despite what the recruitment ads say, nor is it about having the creative power to make your own work easier via automation. Initially I got the impression they wanted “clever people” for the knowledge and design/engineering skill they can bring to the table, but actually the reality is that I don’t get to make use of 90% of what I’ve learned elsewhere, instead I just do the digital equivalent of manual labour. I deliberately under-perform so that the code I write and the ideas I contribute are compatible with the mindsets of my coworkers. I've been surprised at the overwhelming lack of interest among them in the aspect of programming that you do yourself, i.e. architectural principles / design patterns. Before I entered the industry I had the impression that this sort of thing was useful knowledge to have, and that people would just have ... discussions. But there barely is any discussion about our own craft except for specific named projects other people have come up with, like recommendations for Python webservers, testing frameworks, etc. I'm also discouraged by the fear that if I display too much interest in that sort of thing then somebody will call me an Architecture Astronaut, and link to some article Joel Spolsky once wrote, and I won't know what to say. Because so much of what I want to talk about is new stuff that hasn't been long established or even fully thought through yet, I take an 'improv' attitude towards ideas -- meaning, if something is absurd and half-baked then that is an opportunity for conversation and development. But people around me seem to take that as the end of a conversation -- interpreting it as a worked-through, actionable proposal, which has problem X and Y that are up to me, the proposer, to fix (instead of collaboratively fix due to the idea sounding promising.) After this happened enough times I just learned not to bother trying to contribute or communicate in that way. And it's not necessarily their fault; to me it boils down to two different reactions to absurd or half-baked ideas -- exploration or dismissal, each with valid contexts of use. I'm not that confident in my verbal communication skills, but I do manage fine with other topics, so I'm not sure that's the issue here. So, if anybody else with basic programming and google skills could do what I do, then why should I take their job while constantly fantasising about actually making use of what I learned at uni and elsewhere? Maybe I belong in research, but I don’t know how that works. I don’t know if you get to pick what you research, or if you have to sell it as something that will deliver concrete results after X years. (Thinking about the STEPS project here) I already try to spend my free time doing my sort of informal research, but I'm surprised at how unenthusiastic I feel about it after I come home from work, having spent much of the day suppressing daydreams about the exact same stuff. If this was not the case, then I could tolerate my job, but the fact that it's stealing my energy from something I feel is far more important, is too much. |
| 2 comments | |
|
|
Stefan Lesser
2018-09-22 20:00 #
Let me just put this here: http://tonsky.me/blog/disenchantment/ |
| 9 comments | |
|
|
Aidan Cunniffe
2018-09-20 14:08 #
Hey all, you may remember me from the podcast earlier this year (https://omny.fm/shows/future-of-coding/2-1-building-for-deve…). I just finished taking Optic (useoptic.com) through YC's summer batch and with help from PG & the partners we raised a seed round. We've built a powerful two-way code generator that can help teams write and maintain the boilerplate, glue code and tests in their projects. We handle all the routine programming so developers can focus on the most important/novel code. Unlike traditional code generators Optic is smart enough to work even if you make manual changes to generated code. This has enabled a lot of really interesting use cases over the summer (https://news.ycombinator.com/item?id=17560059) and we're excited to build an awesome product / company around the most promising. I think we're taking a very pragmatic approach to this problem that acknowledges most companies aren't going to throw out existing code to use a new programming environment. Right now Optic is just me and I'm looking for someone to build the next chapter of the company with. If you're passionate about improving programming that checks the most important box. Some combination of writing parsers, developing programming languages/tools, and product management chops are nice to haves. If you or someone you know would be interested in working on a problem like this full time, feel free to reach out :slightly_smiling_face:. Thanks all for your support / feedback over the last few months. |
| 4 comments | |
|
|
JP Posma
2018-09-16 23:47 #
:wave::skin-tone-2: |
|
|
Daniel Garcia
2018-09-14 20:09 #
Some of the last ideas Unison team is working on https://github.com/unisonweb/unison/blob/topic/codebase-edit…. I feel is relevant to some of the discussions that have been happening here lately |
| # |
Mariano Guerra
2018-09-14 12:40 #
Time Traveling Tracing :slightly_smiling_face: |
| 1 comments | |
| # |
Daniel Garcia
2018-09-13 21:11 #
Thanks for your list @Nikolas Martens, I found this post really interesting http://akkartik.name/post/mu |
| 5 comments | |
|
|
Felix Kohlgrüber
2018-09-12 15:36 #
When I think about ways to "make programming easier", I often find myself thinking about the same small set of end-user problems that I'd like to be easier to solve. I'd love to hear whether you also have scenarios like these in your head that you use to evaluate your ideas. |
| 24 comments | |
| # |
Mariano Guerra
2018-09-12 03:25 #
Nice effect of tracing, see which branch was taken and why :slightly_smiling_face: |
| 3 comments | |
|
|
Joel Jakubovic
2018-09-11 14:16 #
Thanks! Maybe I should make it clearer on my blog then! It could be most succinctly summarised as iterating "use a simple system to improve and add features to itself". I know the term originally from compilers, where it has something to do with implementing self-hosting compilers, but I can't remember the exact details. I trace all my enthusiasm to VPRI's Open, Reusable Object Models paper (http://www.vpri.org/pdf/tr2006003a_objmod.pdf) and the related stuff on COLAs (http://piumarta.com/software/cola/). >We show that three object types and five methods are sufficient to bootstrap an extensible object model ["Id"] and messaging semantics that are described entirely in terms of those same objects and messages. @Dan Cook has done an excellent job explaining what I would say is the end result of "bootstrapping" on the forum he uses (see https://www.cemetech.net/forum/viewtopic.php?p=270092#270092 and many other posts there). When I talk about bootstrapping I'm usually emphasising the process of getting to a point like that, i.e. what needs to be done outside of the system, to build enough of it that you can then do everything else you want inside instead. The Id system is ostensibly an example of such rich, introspective systems. So is Squeak. But both of these, like everything else, require typing lots of text in a text editor, and writing parsers, to get off the ground, to be bootstrapped. I do not like this, especially since nowadays we type on the keyboard and pixels light up, not ink on teletype-paper. I reckon that there ought to be a way to create graphical computing environments that are as introspective as Smalltalk or Id from a small graphical core, in the same way those two environments living and breathing "text" and "programming languages" were developed using text and programming languages. I want to combine the best of that OROM paper and the best of Bret Victor, and explore what the latter has hinted at, namely ways of specifying computable functions without describing them in a language. To do something like Id, but using shapes other than monospaced glyphs. Since the environment I have to start with is text-code in an editor, the idea is to write the "minimal" amount of such code that will let me comfortably develop the system using input and visual feedback to/from the system, instead of my OS. The process of using a system to improve itself is familiar to us all, because this is what software is, taken as a whole. We create software using more software. The hazy dream is that this should be done all the way down. I am kinda biased for maximal self-modifiability to the point of being automatically uninterested in anything that doesn't have that property - criticism welcome. I'd argue as Dan Cook does in the linked post: >even if you could discover the "perfect" language or interface or whatever for everything, it would still be locked-down to working a certain way, and the programmer or user would be constrained to whatever fixed set of tools & operations that it provides -- and thus the situation remains fundamentally unchanged. Er ... I have written a lot of words, but have they helped? |
| 6 comments | |
|
|
Nikolas Martens
2018-09-11 13:02 #
Hi @Joel Jakubovic, I've been reading some more through your blog (very enjoyable) and there is one question I couldn't find the answer to yet: what exactly do you mean by "bootstrapping"? |
|
|
Shalabh
2018-09-11 11:27 #
@liveprog2018’s Tweet: https://twitter.com/liveprog2018/status/1039425217209282560?s=09 |
| # |
Mariano Guerra
2018-09-11 07:40 #
New Instadeq feature, live tracing for every reference. |
| 8 comments | |
|
|
Stephen De Gabrielle
2018-09-11 00:46 #
Hi I’m new here please tell me if I overstep Community norms. Obviously I’m interested in the future of programming, but I’ve found it hard to catch up by scrolling back in the slack. - is there a wiki or archive of links/topics? I’m experimenting in functional PL design (using the Racket tool chain), specifically the HCI side, with the idea of Englebartian ‘Intelligence Amplification’(as distinct from Strong AI) PS let me know if anyone is interested in a London meetup PPS saw this recently on YouTube http://ravichugh.github.io/sketch-n-sketch/ Thanks for reading my short note Stephen |
| 5 comments | |
|
|
Joel Jakubovic
2018-09-10 13:52 #
After scrolling up and reading some stuff, I have opened 12 tabs. Is this normal? |
|
|
Stefan Lesser
2018-09-09 14:53 #
I just very recently came across Kevlin Henney. Can’t quite remember who recommended the video below, but wow is there some good stuff in there about how we basically keep reinventing stuff from the 60s and 70s (and very entertaining delivery too!): https://youtu.be/eEBOvqMfPoI |
| 3 comments | |
|
|
Nikolas Martens
2018-09-06 13:31 #
That list made me think about money sources again. Who here is funding themselves/projects/research with donations (Patreon, PayPal) or other unconventional ways? |
| 1 comments | |
|
|
Stefan Lesser
2018-09-06 09:01 #
I'm curious, what's everybody's situation here regarding time to think about the stuff we discuss here? Are you… :one: …full-time researching on related matters, either in academic capacity or not (I guess that would be @Steve Krouse's category) :two: …taking some time (months) to temporarily focus on this, until other things — most likely earning money somehow — become more important again (that would be my current situation) :three: …full time committed on a specific project, either as a startup or in some other way that is more tied to a specific idea and its implementation than general research (a) would be (I'd wager that would describe @Paul Biggar's situation) :four: …interested, but unfortunately tied up in an unrelated project or job so there's not much time for this (I'd wager that is a lot of people here…) :five: …something else…? This can be a simple poll where you just respond with an emoji reaction, but I'd love to hear more about how you'd describe your current situation — feel free to respond by creating a thread. |
| 7 comments | |
|
|
Steve Krouse
2018-09-04 07:50 #
!everyone if you’re in NY this month, go vote on when you’d like the next meetup to be in the #in-new-york channel |
|
|
James Koppel
2018-09-03 13:29 #
@Vladimir Gordeev https://en.wikipedia.org/wiki/Structure_editor |
| 1 comments | |
|
|
Vladimir Gordeev
2018-09-03 13:25 #
Want to tell you about one idea that I was recently working on. If text file as a source code format is very limiting and doesn't allow to develop more convenient programming environments -- what is the alternative then? How we gonna store code if it's not in text files? In my understanding such platform should have following properties: 1) Easy integration into web, media. Should be super easy to drop a rich comment for particular piece of code, or reference it somewhere. 2) Versioning of the code. Must be a way to keep old versions of code, reference them. 3) Explicit dependencies stored alongside. If I open old version of code, I should get references to all dependencies of that time, and it should work. 4) Ability to see where particular functions were called. 5) Easy collaboration, sharing of code. I want this platform to be able to offer several interfaces for the same code (might be visual or just old plain text). The interface code should be part of this platform lying next to actual code. I've just read this tweet https://twitter.com/chatur_shalabh/status/1035599115793526784, And got feeling that probably @Shalabh may have exactly same thoughts about all of this. Then I've listened to Ted Nelson's ideas about hypermedia and links that visible on both ends. Then I've also read @Shalabh article about files: https://shalabh.com/programmable-systems/files-and-file-formats.html So it seems like in the end I'm not looking for specific code platform. It seems like I'm looking for more advanced hypermedia than today's web, that can store code along with other content. I'm not sure yet how exactly on this platform code gonna be stored, and what kind of programming languages would execute it. I'm just designing it rich enough that it would be possible. ---------------------- The idea is following: we create a graph where all data is stored as nodes and edges. Nodes and edges are immutable, and thus graph has many properties that git has. User may replicate to his machine any set of nodes he interested in from other peers. User may create node or edge between any two nodes on his machine. Each node and edge is signed by an author. Nodes are addressed by their content, just like it is with magnet links (DHT). User may search for edges for this particular node on peers machines. This looks really powerful, yet not that complicated. Certainly someone else already thought about it. |
| 10 comments | |
|
|
Stefan Lesser
2018-09-03 07:52 #
I'm glad they keep all the papers online. Lots of good stuff there, especially STEPS. |
| 1 comments | |
|
|
Stefan Lesser
2018-09-03 07:52 #
@Shalabh Yep. Part of why I wondered what else is out there. |
|
|
Shalabh
2018-09-03 07:48 #
> Viewpoints Research Institute concluded its operations at the beginning of 2018. From vpri.org |
|
|
Stefan Lesser
2018-09-03 07:31 #
Looking at technology research communities closely related to our theme here, I'm aware of Y-Combinator's Human Advancement Research Community (https://harc.ycr.org) and Alan Kay's Viewpoints Research Institute (http://www.vpri.org) — do you know any others? |
| 15 comments | |
|
|
Stefan Lesser
2018-09-03 06:34 #
I don't think we should do that in #share-your-work though, but rather in a separate channel — maybe #publications? |
|
|
Stefan Lesser
2018-09-03 06:33 #
And I was right this moment reading about RSS feed integration in Slack, and it turns out it's built in: https://get.slack.help/hc/en-us/articles/218688467-Add-RSS-feeds-to-Slack |
|
|
Vladimir Gordeev
2018-09-03 06:26 #
Just created #share-your-work channel for that purpose, please join |
|
|
Ildar
2018-09-02 08:30 #
Is the September meet up still happening? |
| 3 comments | |
|
|
William Taysom
2018-09-01 20:57 #
@Steve Krouse "manually posting" — fake it 'til you make it. |
|
|
Ivan Reese
2018-09-01 12:44 #
Is anyone here familiar enough with Conal Elliott's version of FRP to speak to whether there are limitations on the sorts of equations you can use to create animation with it? For instance, is it possible to satisfy the continuous time semantics of FRP.. while using an animation function that relies on a rough integration method (eg: Euler, Taylor, some ODE integrator, RK4, yadda yadda)? My hunch is "no", since you're introducing error, which might compound if you use the result of one integrated animation function in another integrated animation function. That error will produce non-determinism and violate continuity and introduce path dependence and :face_vomiting: If that's the case, then does that mean you can only use FRP with exact / closed-form equations? BUT... Conal's examples use functions like sine, which (AFAIK) don't have an exact closed-form implementation and are approximate. (EDIT: Turns out trig functions are closed-form, though most implementations I've found are approximate, seemingly due to π being irrational) Am I just conflating the denotational semantics of FRP with the operational semantics of whatever functions are being composed? Does FRP even care about determinism? Context: I'm writing something that you could think of as a game engine / authoring tool, and I'm interested in using FRP for its continuous time semantics (basically, everything forming a DAG of continuous functions with uniform compositional properties, with events that can reconfigure the topology of the graph). My goal is to allow extreme uses of slow motion and rewinding in the authoring tool, with perceptually perfect determinism. But I can't square how this would work with, say, mesh-to-mesh 3d collision detection, or fluid dynamics. These algorithms always seem to use approximate integration, and they tolerate temporal/spatial error by saying "the user will never see it". That assumption doesn't hold in my tool. |
| 8 comments | |
|
|
Steve Krouse
2018-08-31 09:16 #
Ah thanks! I’m always adding new people to the list and am happy to take suggestions if I’m missing people |
| 3 comments | |
|
|
Stefan Lesser
2018-08-31 08:39 #
While we're at it: I also love @Steve Krouse's Twitter list https://twitter.com/stevekrouse/lists/future-of-coding/members — do you still keep that up to date with new members joining this Slack? I know there are more people on there than just us here — that's part of why I love that list. Part of me wants everybody on that list who isn't on this Slack yet to get to join it. :sunglasses: |
|
|
Steve Krouse
2018-08-31 08:34 #
(I’ve wanted to post more of my stuff here but felt like it’d be too self-promote-y, but I think an channel that’s explicitly for feedback could get around that.) |
|
|
Steve Krouse
2018-08-31 08:33 #
Great idea! How about we do manually posting for starters and can figure out automatic if it feels like that’d be good? How does #feedback sound? |
|
|
Mariano Guerra
2018-08-31 07:54 #
maybe a zapier or ifttt rule? |
|
|
Stefan Lesser
2018-08-31 07:31 #
In another community’s group communication tool (Recurse Center’s Zulip) they have a bot where it works pretty much like I described above. They also happen to have a dedicated channel for writing reviews, where authors can collect feedback before they publish. Such a review channel would be another idea I can see us copying here… (having no clue how to implement that technically) |
|
|
Stefan Lesser
2018-08-31 07:27 #
I was just spending some time going through some of your blogs adding many of you to my feed reader. Now I wonder: Is there an easy way to have all the posts that members of this Slack group post automatically go into a #publications channel? Some hack that involves RSS and a bot or Slack integration? I don’t know much about Slack, but maybe someone here does. I’d love to have a single place where I can hear about all you great people writing interesting stuff into the internet. |
| 8 comments | |
|
|
Nikolas Martens
2018-08-31 02:47 #
Hey @Corey Montella. Read your posts and watched the demo. Very nice and quite impressive. I'm a big fan of Eve as well and got a lot of inspiration from it. Funny story: just an hour before you joined this channel on Wednesday, I gave a presentation of my project to the research group here in Potsdam and somebody said that my demo reminded him of one he saw recently but couldn't remember the name. Turns out he was talking about Mech! The reason he was reminded of it was that he didn't understand what problem I'm trying to solve and he had the same feeling when he watched your demo. I thought that's a very interesting sentiment. You said you're targeting "for very small values of 'use'". What could these values be? Do you have a specific use case / target group in mind that you're aiming for? How would you answer the question "What problem are you trying to solve?" |
| 3 comments | |
|
|
Corey Montella
2018-08-29 09:27 #
Eve always had a focus on having the capability to answer complex queries. At its core was this database of tuples and a series of operators that world work over them -- join, union, aggregate etc. This would allow you to ask things like "Find the average salary per department" very easily. Mech is pulling back on that and putting everything into a 2D table. This makes freeform databases a little harder, but it makes things really simple and easy to explain, visualize, and understand. I'm hoping that makes the system overall easier to use even if you lose some of the expressibility of Eve. |
|
|
Daniel Garcia
2018-08-29 09:13 #
@Corey Montella What do you think are the similarities and differences between Mech and Eve? |
|
|
Corey Montella
2018-08-29 08:45 #
So anything I can come up with is going to be more eve-like than elsewhere in the reactive-language spectrum |
|
|
Corey Montella
2018-08-29 08:44 #
Also, since I've been building eves for like 4 years now it's probably the only thing I know how to do anymore |
|
|
Steve Krouse
2018-08-29 08:42 #
Yep, makes sense. That’s a common critique of original FRP |
|
|
Corey Montella
2018-08-29 08:42 #
But I've settled on this very mechanical view of the world because I think it's super simple and easy to visualize and explain, so that's paramount to me |
|
|
Steve Krouse
2018-08-29 08:42 #
Make sense - I’d be curious to hear why you decided on discrete time |
|
|
Corey Montella
2018-08-29 08:41 #
Yeah, I mean honestly I've considered a little bit of everything at this point :stuck_out_tongue: FRP is definitely a lens I've used to view this problem through, actually was probably one of the first ones. |
|
|
Steve Krouse
2018-08-29 08:35 #
Very cool! Classic bouncing ball demo, but with some nice time travel. Question for you - have you considered continuous time (in the Conal Elliot, original FRP sense) instead of discrete time like you have in that demo? |
|
|
Corey Montella
2018-08-29 08:00 #
for very small values of "use" |
|
|
Corey Montella
2018-08-29 08:00 #
My goal is to get something people can use by Splashcon |
|
|
Corey Montella
2018-08-29 07:59 #
If you're familiar with Eve this will look pretty familiar |
|
|
Corey Montella
2018-08-29 07:58 #
Here's a video I put together demonstrating the progress so far. The stuff demonstrated here has already been torn out though since it was pretty hacky, and I'm in the process of putting it back in the right way: https://www.youtube.com/watch?v=r_LPqaxXvaA |
|
|
Corey Montella
2018-08-29 07:32 #
Thanks for the error too. I'll make my first bug report :wink: |
|
|
Nikolas Martens
2018-08-29 07:29 #
Ah great thanks :smiley: |
|
|
Nikolas Martens
2018-08-29 07:28 #
This is what FF says: An error occurred during a connection to mechlang.net. Peer reports it experienced an internal error. Error code: SSL_ERROR_INTERNAL_ERROR_ALERT |
|
|
Corey Montella
2018-08-29 07:28 #
https://github.com/mech-lang/website/blob/master/content/pos… |
|
|
Corey Montella
2018-08-29 07:26 #
I wouldn't be surprised if you are... I had some trouble with gitlab hosting yesterday |
|
|
Nikolas Martens
2018-08-29 07:26 #
Can't access the page neither =( |
|
|
Mariano Guerra
2018-08-29 07:21 #
am I the only one getting SSL errors on the blog link? (both firefox nightly and chrome stable) |
| 1 comments | |
|
|
Corey Montella
2018-08-29 07:18 #
Thanks, I have a couple more posts in the pipeline, but I've spent the last couple months getting things ready for a submission, I figured since no one was reading my blog anyway I could skip them until I started getting eyeballs |
|
|
Steve Krouse
2018-08-29 03:41 #
Great first blog post! I think your “two lists” do a great job communicating the features of your language in terms of human benefits https://mechlang.net/post/2018-06-07-hello-world/ |
|
|
Corey Montella
2018-08-28 19:19 #
But I'm starting to at least put it out there now that I have a compiler and can show something running |
|
|
Corey Montella
2018-08-28 19:18 #
I'm trying to keep it low key for now because I've only been working on it for a couple months and it's really not usable. It really only runs one program. |
|
|
Corey Montella
2018-08-28 19:17 #
I think we did a lot of cool stuff at Eve that we couldn't fully explore because we felt it didn't fit into the venture-backed startup model. So the one good thing that came out of Eve not getting acquired was that I could look at some of the ideas we passed over, so I've been doing that in my own language project Mech: https://github.com/mech-lang/mech |
|
|
Daniel Garcia
2018-08-28 17:52 #
Hi @Corey Montella, would be amazing if you can tell us what are you doing currently and what are your views on Eve after the shut down |
|
|
Corey Montella
2018-08-28 17:24 #
Coll yeah, let me know. Happy to talk about Eve and whatever else people want to talk about! |
|
|
Steve Krouse
2018-08-28 17:23 #
Wowowow! Welcome @Corey Montella! Glad to have you here. Lots of eve fans here. I’d like to do one last meetup in NY in Sept before I move to London. Will keep you posted on details... |
|
|
Corey Montella
2018-08-28 17:18 #
Hi everyone, I'm happy to find this community here because I haven't been able to talk about future of programming topics since Eve shut down. Are there any meetups planned for the future? I'm living near NYC now, so I would be down for talking about this topic in person. Also looking to see if anyone here has submitted or is planning to attend SplashCon this year. |
|
|
Mariano Guerra
2018-08-28 07:12 #
@Steve Krouse in podcast #29 you talked about a higher level HTTP calls, have you checked https://graphql.org/, https://netflix.github.io/falcor/ and om.next's data query capabilities? (here's an article about them https://medium.com/@softwarecf/om-data-access-43ee0b45976c) |
| 4 comments | |
|
|
Jacob Sandlund
2018-08-26 00:13 #
Would people be interested in a "future programming wiki"? Does something like that exist? |
| 10 comments | |
|
|
Shalabh
2018-08-23 12:55 #
https://valaa.com/ |
|
|
Steve Krouse
2018-08-19 03:57 #
Nor files! Really well written https://shalabh.com/programmable-systems/files-and-file-formats.html |
| 1 comments | |
|
|
Steve Krouse
2018-08-19 03:44 #
@Shalabh I really like this article. I never questioned the primacy of the enter key before https://shalabh.com/programmable-systems/plain-text.html |
| 28 comments | |
|
|
Mariano Guerra
2018-08-17 14:56 #
in fact I'm not converting it into, I'm writing a converter that parsed the XML files, creates an intermediate (Abstract Format Tree) and one of the generators is markdown, so I can use https://www.mkdocs.org/ |
|
|
Mariano Guerra
2018-08-17 14:55 #
I'm converting a documentation system based on XML sources and XSLT transforms to HTML by converting the XML files into markdown, what alternative future of programming is that? :sob: |
| 4 comments | |
|
|
Shalabh
2018-08-17 14:40 #
The podcasts are great but is there any way to get transcripts? |
| 3 comments | |
|
|
Mariano Guerra
2018-08-15 11:47 #
https://charticulator.com/ |
| 2 comments | |
|
|
Shalabh
2018-08-13 18:47 #
Great question from @Stefan Lesser that I'm interested in as well. There's good advice from @Ivan Reese . I'm mostly stuck around framing/phrasing the problem I'm hoping to solve. I've found some things that seem like progress, at least. One is ways to filter and keep track of papers etc. using skimming and highlighting of key phrases in some annotation system (I use hypothes.is). The key phrases are ones that are either insights or things I clearly disagree with - so skimming the highlights kind of tells me when and if I want to read more. The other thing is just writing - I keep a semi-organized notes (some sections and sub-sections) with ideas etc that just pop into my head at any time or when reading any material. Every so often I try to do a review and reorg of the notes and sometime I also do a proper write-up of some topic, pulling from my notes. This helps me feel that something is 'processed' and not have to spin that stuff in my head again. I don't really have research 'days' because I only find scattered time here and there. |
|
|
Ivan Reese
2018-08-13 13:17 #
I've found it most essential to have a reasonably well-bounded end state. You can't "win" if you don't know what winning is. Whether it's some idea that I want reify (or find out of someone else has already realized it), or it's a particular pain that my company (or society/civilization) is feeling that I'd like to remove, or something I want to learn just to keep abreast of technology and our culture, I think it's key to define a goal condition for your research-like activity, as specifically as you can manage. A really helpful yardstick I've found when approaching learning material (papers, blog posts, talks, books, etc) is to determine if something is or isn't going to be pabulum — intellectual, thought-provoking, informative, but ultimately bland and entertaining to me, rather than helpful to me. This is a very difficult determination to make in the absence of a specific goal. I also find it's valuable to do whatever I can to make sure I'm highly excited about what I'm working on. That might be a luxury not everyone can afford, but I think we're all here in this Slack because of some measure of mutual passion, so I think it's safe to take this value as a given here. Enthusiasm is what determines how I structure my time at a fine-grained level — "What small step toward my end goal am I most excited about taking next?" The pabulum filter + specific end goal keeps me from treading water, while this "chase your curiosity" approach keeps the work from becoming monotonous. One day I might make a paper prototype. Then I might decide that paper lacks "liveness", so I grab a stop-motion app and make an animated paper prototype. Then I might decide that I really need to interact with the system, so I ask my wife to help me "act out" the HCI, moving the paper pieces around according to some ruleset. After refining the ruleset, I have something structured enough to prototype in Keynote or hypertext. In each of these steps, I'm doing work that I need to do, but in a way that keeps me away from writing code, since today I'm less excited about writing code than I am about (say) scissors. That's my recipe. |
|
|
Stefan Lesser
2018-08-11 08:59 #
How does research work? My academic career was very short, I ended up working very early. Most of us here do research in one way or another, and I sometimes ask myself: "How does it work, really?" I'm less talking about how to write papers or do stuff that's required mostly for the bureaucracy and process overhead in academia and I'm more interested in what's considered good practice to formulate good research questions, tackle them, and keep making progress towards finding answers. Do you have any tips to share or resources to point to? How do you keep feeling productive and not just reading too much or wondering what to experiment with? Or simply put, what does your day look like, when you're "doing research"? (This is partly inspired by @Steve Krouse's log, which gives a good perspective into how he does it. Thanks for sharing your process, Steve!) |
|
|
Daniel Garcia
2018-08-10 14:25 #
The project is so far from changing programming I know :laughing: . But it would be great for day to day working on “legacy” projects |
|
|
Daniel Garcia
2018-08-10 14:24 #
Hey everyone!! Earlier this week occurred to me a project and I’d like to hear your opinions on it. What if the questions you ask in a Stackoverflow like site, would be your code together with some Unit Tests? Then a CI server can run the answers to see which one(s) make the tests pass. I see some good things about it: The CI server can test different versions of the language/framework/packages and you can know which answer works with any combination of them. Also when you find the “question” you can copy the tests to your project and see which answers work well with your code. What do you think? |
| 20 comments | |
|
|
Steve Krouse
2018-08-10 11:25 #
^must read! |
|
|
Shalabh
2018-08-10 11:24 #
https://rsnous.com/posts/notes-from-dynamicland-geokit/ |
|
|
Steve Krouse
2018-08-10 05:28 #
What a fun rant! |
|
|
Stefan Lesser
2018-08-09 23:51 #
This seemed relevant to this group: “Proper science (ideally) operates like a flock of birds. Everyone maintains a steady distance from the ones around them, and reacts to changes in speed or direction. This generates a rough consensus about where every bird should be, and keeps the group together. This consensus is leaderless, yet coordinated and highly dynamic. It’s entrancing to see thousands of starlings boiling out of a meadow like a sentient thundercloud. But flocks are not great for exploring large tracts of territory. For that you need an antiflock.” https://twitter.com/stefanlesser/status/1027805124515774464 |
|
|
James Koppel
2018-08-07 09:11 #
@William Taysom Once upon a time, I thought Lua was a great example because I thought it was the simplest real language. Then I started working on tools for it…. |
|
|
Jacob Sandlund
2018-08-07 07:56 #
I sent him an invite when I saw the talk of infra haha |
|
|
Steve Krouse
2018-08-07 03:54 #
Amazing! @Chris Hall of Infra just joined the slack. You heard we were discussing universal ASTs? |
|
|
William Taysom
2018-08-06 23:29 #
Wonder whether the call of universal AST comes from the human ability ignore details. Let's say every structured imperative language feels the same after you've been at this for a while. It feels – as a person – that you're operating on the same step-by-step statement built of expression substrate with loops and branching, but this is an illusion. In the details, every language has it's own finicky bits* (scope, precedence, where what kinds of declarations are allowed) that make any tool 20% common core and 80% exceptions. (I suppose that where the @James Koppel's work comes in — promise to read.) (* Lua has the fewest by the way. :wink:) |
| 1 comments | |
|
|
James Koppel
2018-08-06 21:32 #
Here’s a pre-print: |
|
|
James Koppel
2018-08-06 21:32 #
My OOPSLA 2018 paper also touches on why universal ASTs don’t actually work for modeling multiple languages. The paper presents an alternative that does work, called incremental parametric syntax |
| # |
James Koppel
2018-08-06 21:31 #
https://docs.google.com/document/d/1Rcz6icmi4LpSWhzPGLIhGcYw… |
|
|
James Koppel
2018-08-06 21:30 #
But it’s such a common idea that I have a half-written blog post explaining why it’s terrible: |
|
|
James Koppel
2018-08-06 21:29 #
That’s a terrible idea |
|
|
James Koppel
2018-08-06 21:29 #
But, if you specifically mean trying to create a universal AST that can handle every language |
|
|
James Koppel
2018-08-06 21:29 #
In the broadest sense, we already have one: my computer can read every kind of AST that’s been invented |
|
|
James Koppel
2018-08-06 21:28 #
As for the universal format for ASTs: |
|
|
James Koppel
2018-08-06 21:28 #
https://en.wikipedia.org/wiki/Structure_editor |
|
|
James Koppel
2018-08-06 21:28 #
@Rik Hemsley The kind of editor you’re suggestion is called a structure editor |
|
|
William Taysom
2018-08-06 18:32 #
@Steve Krouse "Unfortunately, your language (has/lacks)" — absolutely brilliant. |
|
|
William Taysom
2018-08-06 18:31 #
@Rik Hemsley as you can see, many have looked into AST and structural treatments of programs. A standard may be tricky because an AST can really represent different amounts of structure. Consider a basic syntax tree (this expression joins with that one) vs a binding tree (where scope of variables is also represented). In my experience (say with Lisp and Scheme macros), it's the binding tree that you need to have in mind for any non-trivial structural interaction. |
|
|
Brian Hempel
2018-08-06 15:22 #
http://mbeddr.com/ is embedded programming (C99) on top of MPS |
|
|
Caleb Helbling
2018-08-06 15:14 #
I bought one of the books about MPS and it was horribly outdated |
|
|
Caleb Helbling
2018-08-06 15:14 #
The problem with MPS is that there's little learning material and it seems to solely target the Java ecosystem |
|
|
Caleb Helbling
2018-08-06 15:13 #
@Shalabh infra looks pretty interesting. Thanks for the link :slightly_smiling_face: |
|
|
Rik Hemsley
2018-08-06 14:39 #
@Caleb Helbling excellent, thanks |
|
|
Caleb Helbling
2018-08-06 14:23 #
@Rik Hemsley you should read my blog post about this concept. There are a number of people now arriving at similar conclusions: http://www.calebh.io/Unifying-the-Software-Toolchain/ |
|
|
Mariano Guerra
2018-08-06 13:51 #
related: http://www.metaborg.org/en/latest/ |
|
|
Rik Hemsley
2018-08-06 13:50 #
ha! |
|
|
Rik Hemsley
2018-08-06 13:50 #
"Infra is edited using a new type of freeform editor. This new kind of editor can closely resemble Text Editors under basic use cases, and resemble Web Browsers, spreadsheets, or IDEs under richer use cases." |
|
|
Rik Hemsley
2018-08-06 13:49 #
I thought I could give it to business people... no. Maybe to testers who write code? No, they want to learn a 'real' language. Transferable skills, etc. |
|
|
Shalabh
2018-08-06 13:49 #
> what if there was a standard binary representation for an AST? Specifically wrt this, also see infra-structure.org |
|
|
Rik Hemsley
2018-08-06 13:49 #
I haven't played with that yet - just read the intro. Looks very cool and like I'll never get to use it for anything serious :slightly_smiling_face: |
|
|
Mariano Guerra
2018-08-06 13:47 #
MPS may be of interest too: https://www.jetbrains.com/mps/ |
|
|
Mariano Guerra
2018-08-06 13:46 #
that would be a good place to start looking into "extracting" the standard, something that is already being used |
|
|
Rik Hemsley
2018-08-06 13:46 #
I can see it'd break down completely where a language is simply designed for a particular way of working. There's no way I could translate between Elixir and C# without a redesign |
|
|
Mariano Guerra
2018-08-06 13:46 #
LLVM may also share some higher level representation between languages, not sure how much |
|
|
Rik Hemsley
2018-08-06 13:45 #
@Mariano Guerra There are differences, yes - but there are many languages which are adopting all of those features as time goes on |
|
|
Rik Hemsley
2018-08-06 13:44 #
@Shalabh no, that's nice. I've seen something like it that was very basic. That looks much further ahead. |
|
|
Mariano Guerra
2018-08-06 13:44 #
http://www.parrot.org/ may be of interest, but is one level below AST, I guess they may share some higher level utilities |
|
|
Mariano Guerra
2018-08-06 13:42 #
pattern matching for non pattern matching languages, types, classes, the this parameter, tuples, destructuring |
|
|
Shalabh
2018-08-06 13:42 #
Hi Rik, have you seen isomorf.io? |
|
|
Rik Hemsley
2018-08-06 13:42 #
at least between a few languages |
|
|
Rik Hemsley
2018-08-06 13:42 #
Perhaps. Or there may be enough commonality to make it work without 'flavours' |
|
|
Rik Hemsley
2018-08-06 13:41 #
You like camelCase for function names? You get it. Or you can have this_thing, or ... |
|
|
Mariano Guerra
2018-08-06 13:41 #
you would need AST "flavors" to know what language you are editing |
|
|
Mariano Guerra
2018-08-06 13:40 #
wouldn't that AST become the least common denominator of all language or the union of all languages? |
|
|
Rik Hemsley
2018-08-06 13:40 #
And then the most fun bit: You could skin your editor however you liked. You like line noise? Great, have some () and {} everywhere. |
|
|
Rik Hemsley
2018-08-06 13:39 #
A compiler outside an editor/IDE wouldn't have to lex or parse. |
|
|
Rik Hemsley
2018-08-06 13:39 #
Your IDE wouldn't have to parse your code to an AST every time you loaded a text file. |
|
|
Rik Hemsley
2018-08-06 13:38 #
There'd be no need for lexing syntax highlighters. |
|
|
Rik Hemsley
2018-08-06 13:38 #
But also, the editor could still look exactly like a text editor. It's just that parsing would only happen as new code was typed - with the surroundings already known, because they're the AST. |
|
|
Rik Hemsley
2018-08-06 13:37 #
And instead of editing text, we edited the AST as a graph. This has probably been done... |
|
|
Rik Hemsley
2018-08-06 13:36 #
So - what if there was a standard binary representation for an AST? (bit of a leap, I know) |
|
|
Rik Hemsley
2018-08-06 13:35 #
I regularly switch between (in decreasing order of time spent) Elixir, Ruby, Python, C# and Java |
|
|
Rik Hemsley
2018-08-06 13:34 #
3. Many languages are becoming very similar to each other in terms of their capabilities. I first saw this with VB.NET and C#, where either was almost a 'skin' on the other. Now I'm struggling to find major differences between many of the common languages. |
|
|
Rik Hemsley
2018-08-06 13:32 #
2. There's no such thing as an 'average size'. Everyone has their own preferences when it comes to their environment. This extends to programming language style (lisp, C-like, etc.), CapitalisaTion, colour schemes... |
|
|
Rik Hemsley
2018-08-06 13:30 #
There's an awful lot of work that goes on when turning a bunch of text into some machine language. On the way, there's lexing, parsing (probably to an AST), then some optimisation, turning into some intermediate language - perhaps, maybe some more optimisation, some JITting, etc. |
|
|
Rik Hemsley
2018-08-06 13:28 #
So I'll give it a go. |
|
|
Rik Hemsley
2018-08-06 13:28 #
I've been trying to persuade people that one of my 'bright' ideas is indeed bright, and - as usual - failing. I noticed this group and thought I might either get 'We thought of that, it's a bad idea' or at least some sympathy. |
|
|
Rik Hemsley
2018-08-06 13:27 #
Good evening |
|
|
Steve Krouse
2018-08-06 11:56 #
I had a good laugh this morning with the programming language checklist http://colinm.org/language_checklist.html |
|
|
James Koppel
2018-08-06 11:05 #
SDG does some good stuff. I've started talking to Daniel Jackson a lot |
| 2 comments | |
|
|
James Koppel
2018-08-06 11:04 #
Hello again @Caleb Helbling! |
|
|
Caleb Helbling
2018-08-06 08:59 #
@James Koppel I went to one of your first meetups. Just thought I'd say hi since I work at MIT. I've been looking a little bit into the Software Design Group at CSAIL |
|
|
Caleb Helbling
2018-08-06 08:57 #
There is also a video |
|
|
Caleb Helbling
2018-08-06 08:57 #
I have a new blog post on hooking programs together with a directed graph interface: http://www.calebh.io/Maestroflow/ |
| 5 comments | |
|
|
William Taysom
2018-08-05 22:29 #
Have to say friends, the rise of JavaScript restores my faith in god, admittedly his name is Anansi, but all the same. |
|
|
Felix Kohlgrüber
2018-08-05 14:23 #
Regarding your discussion from Friday, I'd like to point you to Grasshopper [1]. It's an Android/iOS app created by a team at Google that teaches you basic Javascript programming in a motivating game-like environment. After doing some lessons in it I think that it's a great tool to gradually introduce non-coders to text-based programming and basic concepts like data types, loops, conditionals, ... [1] https://grasshopper.codes/ |
|
|
Sean Aubin
2018-08-04 10:14 #
Should have known I found you here @Brian Hempel |
|
|
Brian Hempel
2018-08-03 22:29 #
Thanks @Steve Krouse for gathering people! |
|
|
Steve Krouse
2018-08-03 19:56 #
Agreed! |
|
|
William Taysom
2018-08-03 19:38 #
Sounds like a good idea to me. |
|
|
Stefan Lesser
2018-08-03 19:26 #
Welcome, @James Koppel, and thanks for taking the time to write a little bit about yourself! Just made me realize how little I know about many people here. Shall we do it like many other Slacks do it and create an #introductions channel and encourage new members to write a little bit about what they do, just like Jimmy did? And maybe we residents can also use that channel to re-introduce ourselves? |
|
|
James Koppel
2018-08-03 15:00 #
Feel free to ask me anything about automated programming, automated software maintenance, programming language theory, etc. Chances are, I either know the answer or know someone who does! |
| # |
James Koppel
2018-08-03 14:58 #
https://docs.google.com/document/d/1MkEtcqM_rjO_eVNNQ-phfyQ7… |
|
|
James Koppel
2018-08-03 14:58 #
https://www.thestrangeloop.com/2018/you-are-a-program-synthesizer.html |
|
|
James Koppel
2018-08-03 14:58 #
And examples from the future: |
|
|
James Koppel
2018-08-03 14:58 #
https://www.youtube.com/watch?v=Aa2CFAzxudY&t=617s |
|
|
James Koppel
2018-08-03 14:58 #
https://www.youtube.com/watch?v=c6dBUREapzc |
|
|
James Koppel
2018-08-03 14:58 #
I also do a fair bit of outreach about automated programming stuff. Some examples from the past: |
|
|
James Koppel
2018-08-03 14:56 #
Speaking of which, he’s asked me to spread the word about LIVE ’18, the workshop on live programming. They’re very much interested in industry participants: https://2018.splashcon.org/track/live-2018-papers |
|
|
James Koppel
2018-08-03 14:55 #
I saw someone mention Henry Lieberman’s work on Programming by Demonstration a few days ago. I see him pretty frequently; he’ll be pleased to hear about that |
|
|
James Koppel
2018-08-03 14:54 #
So I figured I could have a good time talking to a lot of you guys, and show you a lot of things you’d be interested in |
|
|
James Koppel
2018-08-03 14:54 #
I’ve been in the automated programming space about 8 years, and full-time for 5 of those years |
|
|
James Koppel
2018-08-03 14:53 #
On the side, I have a business teaching engineers how to spend less time debugging and write more maintainable code ( http://jameskoppelcoaching.com/ ) |
|
|
James Koppel
2018-08-03 14:53 #
Hi everyone! I’m Jimmy. I’m a 4th-year Ph. D. student at MIT. I specialize in making program analysis, synthesis, and transformation tools easier to build |
|
|
James Koppel
2018-08-03 14:52 #
Yes, we have a mutual friend in Alexey, as well as in Nicky Case and Amy Quispe and about 20 other people… |
|
|
James Koppel
2018-08-03 14:52 #
@Steve Krouse Thanks for the welcome. I already messaged you privately |
|
|
Steve Krouse
2018-08-03 14:26 #
Yeah this probably should’ve been a thread - good point @Stefan Lesser. It’s up to the first person who responds to start it |
|
|
Daniel Garcia
2018-08-03 14:23 #
@Stefan Lesser Scratch is there almost at the end of the list, however I’m not a big of it. I don’t know much about Hopscotch, I’m going to check it and add it to the list |
|
|
Stefan Lesser
2018-08-03 13:58 #
@William Taysom @Nicolae Rusan Yes, both Sketch and Hopscotch are great tools and I should definitely add them to my list. @Steve Krouse That’s a great story and example of how this should go ideally. I’m sure they were very happy with you putting that much effort into putting them on the right track. @Daniel Garcia Awesome list! Lots of stuff I hadn’t have on the radar. Would you consider adding Hopscotch and Scratch to the list, or is there a reason they’re not in there? And can somebody explain to me when and when not to use the Slack threads feature? The way threads work in Slack is weird. |
|
|
Daniel Garcia
2018-08-03 12:52 #
@Stefan Lesser I have a gist with the resources I like to recommend. Heuristics to me are age of the person & hobbies. https://gist.github.com/pel-daniel/82d0ffcdcb9b994ae33828cd549ce38e |
|
|
Nicolae Rusan
2018-08-03 10:39 #
https://www.gethopscotch.com/ |
|
|
Nicolae Rusan
2018-08-03 10:39 #
@Stefan Lesser I might even recommend as a starting point that they play around with Hopscotch (cc @Sam John) to get a core sense of what is involved in programming. At least a fun way to start! My niece went deep on it, but I also recommended it to our designer as a starting point, because I found for my niece it was very simple for her to then transition those concepts to written versions of the visual programming language (i.e. she knows what variables, logic statements, loops, event based programming etc. are) |
|
|
Stefan Lesser
2018-08-03 09:55 #
Approaching 100 group members. Who's it going to be? :drum_with_drumsticks: |
|
|
Steve Krouse
2018-08-03 09:40 #
Welcome to the group @James Koppel! I hear we have a mutual friend Alexey! |
|
|
Steve Krouse
2018-08-03 09:40 #
One of the most useful parts of that 45 minutes was him seeing how often I needed to google things and look them up in the docs. He was blown away by that, and very empowered at the same time |
|
|
Steve Krouse
2018-08-03 09:39 #
I love this question @Stefan Lesser. I also get it all the time. I recently had success with a similar approach you mention. LIke @William Taysom says, it's good to know which country they want to end up in. The conversation went something like this... "I want to learn Python." "Ok, cool. Do do what?" "Do buy and sell stocks." "On your own or at a company?" "At a company." "A company like Two Sigma...?" "Yes, I want a job at Two Sigma." "And they use Python...?" "Yes that's what a friend of mine who works there said." "Ok, got it. Give me a second to do some googling... OK I just found a python stock trading platform https://www.quantopian.com/. It looks like they have a nice Jupyter environment and docs. Let's create an account there and go through the first few pages together...." ... after a few hours "Ok, this is great. I can continue here on my own at home." |
|
|
William Taysom
2018-08-03 05:28 #
No Scratch love Stefan? :cry: It's honestly where I would start an adult without who hasn't done any programming before. "Yes, it looks like a toy friend. But let me assure you, this is the wax-on wax-off of the discipline except cute-fun rather than an apprentice chore." |
|
|
William Taysom
2018-08-03 05:18 #
I agree that finding the person's domain is key. Yes, knowing some programming helps with other kinds. I guess metaphorically speaking, it's good to ask a person whether they're planning to go France or Italy. |
|
|
Stefan Lesser
2018-08-03 02:51 #
A friend just asked me The Question™: "Hey, a friend of mine wants to learn programming. He hasn't done any programming before. Where should he start?" I get that question a lot and still feel uncomfortable answering it. My usual strategy is to ask a few questions back to learn more about the person, which background they have, why they want to learn programming or what they find interesting about it, and what their preferred style of learning is (reading books and tutorials, watching videos, etc.). Then I try to present them with a few pointers to online resources that I consider a good path depending on the answers I get. Most often I end up pointing them to either Processing(js), Unity, Swift Playgrounds, Python, or JavaScript/Web. Do you have any good heuristics on how to help people with that question? What are the questions you ask to find out about the person to make sure your advice is sound? And what are the absolute beginner resources per language that you recommend to people who start from basically zero? |
|
|
Steve Krouse
2018-08-02 06:40 #
I wrote a rant about how great you all are that it makes it hard for me to talk “regular engineers” http://futureofcoding.org/essays/sissies |
| 14 comments | |
|
|
Mariano Guerra
2018-08-02 04:57 #
http://acypher.com/wwid/ |
| 1 comments | |
|
|
Mariano Guerra
2018-08-02 04:57 #
Just in case someone doesn't know about this resources, here they are: http://web.media.mit.edu/~lieber/Your-Wish/ "Your Wish is My Command: Giving Users the Power to Instruct their Software" |
|
|
Dominik Wagner
2018-08-01 14:10 #
Thanks. Hello! |
|
|
Steve Krouse
2018-08-01 14:06 #
Welcome @Michael Steil and @Dominik Wagner :tada: |
|
|
Norbert Frank
2018-08-01 08:40 #
@Steve Krouse thanks! I was invited here by @Stefan Lesser. Fascinating subject. Just started listening to your podcast. |
|
|
Steve Krouse
2018-08-01 08:22 #
Welcome to the group @Norbert Frank! |
|
|
Stefan Lesser
2018-07-30 23:21 #
Somebody had a good bad day… @Jonathan Edwards :clap: https://alarmingdevelopment.org/?p=1173 |
|
|
Stefan Lesser
2018-07-30 08:03 #
What are the best ways for programmers that prefer different platforms, programming languages, and runtime environments to work together on the same software system? Let's say a C, a Python, a JavaScript, and a Haskell programmer walk into a bar, and — after the joke is finished — they decide to work together on a piece of software but all want to keep using their preferred language (let's ignore how useful or stubborn or realistic that is for a moment) — how could they technically do it with contemporary methods? |
| 28 comments | |
|
|
Mariano Guerra
2018-07-29 10:33 #
/poll "Should we create a #europe channel?" "Yes" "No" |
|
|
Steve Krouse
2018-07-29 09:21 #
I might be moving to London! |
| 3 comments | |
|
|
Stefan Lesser
2018-07-29 08:10 #
Unrelated to what I wrote above: Would it be useful to create a #europe channel for those of us living here? I would love to get some discussion going about a more personal meeting in that part of the world, but can't really tell if we have enough people here. I'd be happy to set up a physical meet-up in London, UK, but it looks like that would be a rather small one. |
|
|
Stefan Lesser
2018-07-29 07:58 #
Somehow I ended up reading Basics of the Unix Philosophy (http://www.faqs.org/docs/artu/ch01s06.html) from The Art of Unix Programming and — just like Kevlin Henney argues in the talk @Felix Kohlgrüber linked to above — it also shows that we came across a lot of good principles and knowledge and somehow manage to totally ignore most of it… Also I believe most of us here are familiar with Alan Kay's STEPS project (http://www.vpri.org/pdf/tr2012001_steps.pdf). This was an attempt back in the late 2000s to dramatically reduce software complexity and build a full-fledged "desktop multimedia system" in less than 20K lines of code. Sometimes I wonder what the requirements would be for a project like STEPS, initiated today. Would it still be for personal computers or would it focus on mobile devices instead? Would it use a different (better?) metric than LOC? Would it still require its own DSLs and compilers? And — most interestingly — would it still be able to produce anything meaningful in 20K LOC or less? |
| 3 comments | |
|
|
Steve Krouse
2018-07-23 14:48 #
Welcome @Dan Miller :tada: |
|
|
Steve Krouse
2018-07-23 14:47 #
Looks great - excited to check it out @Mariano Guerra |
|
|
Mariano Guerra
2018-07-23 05:49 #
Updated the feature page of instadeq, groups features better, feedback welcome: http://instadeq.com/tour/workspaces/ |
|
|
Jacob Sandlund
2018-07-21 20:24 #
Thanks! Hello, everybody! |
|
|
Steve Krouse
2018-07-21 05:54 #
Welcome to the group @Jacob Sandlund! |
|
|
Mariano Guerra
2018-07-20 04:46 #
otherwise this tour gives you an idea of it's capabilities (animations are a little bit outdated) https://instadeq.com/tour/workspaces/ |
|
|
Mariano Guerra
2018-07-20 04:45 #
here's a short video that shows some of the capabilities: https://youtu.be/qJ1pH3PDZtI |
|
|
Mariano Guerra
2018-07-20 04:45 #
hi! I'm Mariano Guerra, a Software Engineer from Argentina, currently living in Stuttgart, Germany. I work on a product (https://instadeq.com) that tries to bring the power of data processing to non programmers. After a couple of months of working on it I found out that there's a field called Programming by Demonstration that matches what instadeq does almost perfectly (it would have saved me some time to know about it before starting :slightly_smiling_face:) |
|
|
Steve Krouse
2018-07-20 04:40 #
Welcome welcome @Sasha Illarionov :wave: |
|
|
crunchysoul
2018-07-18 15:44 #
thank you @Steve Krouse |
|
|
Steve Krouse
2018-07-18 15:44 #
Welcome @crunchysoul! |
|
|
William Taysom
2018-07-15 23:07 #
@Arthur Carabott Your Sublime Text ChromeREPL looks like something I'm going to need to install. https://www.arthurcarabott.com/chrome-repl/ |
| 2 comments | |
|
|
Arthur Carabott
2018-07-15 06:16 #
hello all, I found out about the slack via the podcast interview with @Glen Chiacchieri. I spent a summer at HARC in 2016 with Alex Warth’s group (with people like @Jonathan Edwards), and currently work mostly on designing new interfaces for music, as well as teaching programming to designers at the RCA in London. |
|
|
Daniel Garcia
2018-07-13 10:19 #
Great talk @Felix Kohlgrüber, thanks for sharing! |
|
|
William Taysom
2018-07-13 06:57 #
(In all fairness, c2 is now a historical artifact. All the same.) |
|
|
William Taysom
2018-07-13 06:49 #
@Felix Kohlgrüber welcome to the club. Indeed it is a trick to organize the world's information to make it universally accessible and useful. Not only does a wiki the come to mind, but the Wiki was invented precisely for this purpose http://wiki.c2.com/?WikiWikiWeb. |
|
|
Felix Kohlgrüber
2018-07-13 04:38 #
Talking about "reinventing the wheel", I need to make you add another item to your link lists: https://www.youtube.com/watch?v=AbgsfeGvg3E This great talk by Kevlin Henney is about all the "trends" in programming that were reinvented and first appeared decades ago. It really makes me wonder if there's a way to prevent this from happening. |
|
|
Felix Kohlgrüber
2018-07-13 04:30 #
One thing I noticed during my research and also by reading through all the different link lists and individual links posted here is that it's really hard to get an overview of what's been done by other people. I'm wondering if there's a better way to collaboratively share knowledge and build upon what others have done. The first thing that comes to mind would be a wiki-like system. This could be used to organize different sources, probably by colaboratively writing summaries for these and linking to related stuff. On a higher level, this wiki could contain articles about "principles", "values" or simply knowledge derived from multiple sources. I think this would allow evolutionary process instead of the "reinventing the wheel" problem our industry is facing so often. What do you think? |
|
|
Felix Kohlgrüber
2018-07-13 04:17 #
Hi, I've been following along this group, @Steve Krouse's podcast, the SomethingNew repo on github, ... for a while now but haven't introduced myself yet. My name is Felix and I'm studying CS in Karlsruhe, Germany at the moment. My ideas about FP started with the wish to have a tool that combines the best part of Excel, Jupyter Notebooks and OneNote and have since evolved into Structured Editing, UI Design, Programming Languages and so much more areas. It's great to see that other people are thinking about similar stuff as well. |
|
|
Caleb Helbling
2018-06-27 16:28 #
Although if you wanted to use a grid you could |
|
|
Caleb Helbling
2018-06-27 16:28 #
A CAD based layout is more free-form |
|
|
Caleb Helbling
2018-06-27 16:27 #
Hmm looks pretty interesting, although it uses grid layouts much like the existing tools |
|
|
Steve Krouse
2018-06-27 16:20 #
For a CAD inspired UI tool, check out subform https://subformapp.com/. Should be right up your alley |
|
|
Caleb Helbling
2018-06-27 16:18 #
Here's an interesting idea I had for user interface layout: an inductive constraint solver engine. So it's basically CAD combined with recursive drawing http://recursivedrawing.com/ |
|
|
Guido Bartolucci
2018-06-21 16:25 #
Kentucky, US! :slightly_smiling_face: |
|
|
Daniel Garcia
2018-06-21 08:49 #
Mexico City :slightly_smiling_face: |
|
|
Aaron Kent
2018-06-21 06:12 #
Wash DC |
|
|
Niko Autio
2018-06-21 06:06 #
EU/Finland |
|
|
William Taysom
2018-06-20 18:05 #
Anyone else in Hong Kong. :wink: |
|
|
Davide Della Casa
2018-06-20 15:06 #
I’m in London UK as well |
|
|
Stefan Lesser
2018-06-20 14:50 #
That makes me wonder, who here is in Europe and where exactly? (I’m in London, UK.) |
| 1 comments | |
|
|
Steve Krouse
2018-06-20 14:18 #
Hey !everyone - I know it's been a while (sorry!) but I'd like to schedule the next Future of Programming meetup in NYC. I know that not everyone in this Slack in NYC-based, so I created an #in-new-york channel just for us NYC folks, so be sure to join that if you're NYC-based |
|
|
Stefan Lesser
2018-06-14 14:01 #
Interesting idea… (Twitter thread): https://twitter.com/mcclure111/status/1007348457550458880 |
|
|
Niko Autio
2018-06-08 14:37 #
@Roie Schwaber-Cohen ah external pressure, the best source of motivation :smile: |
|
|
Roie Schwaber-Cohen
2018-06-08 13:16 #
would read. |
|
|
Roie Schwaber-Cohen
2018-06-08 13:16 #
@Niko Autio that sounds awesome |
|
|
Niko Autio
2018-06-06 12:09 #
"generalized back-end of Bret Victor's demos" |
|
|
Niko Autio
2018-06-06 12:08 #
One topic I am interested about is how to apply most advantages of textual systems for GUIs |
| 18 comments | |
|
|
Niko Autio
2018-06-06 12:02 #
I am looking for subject for my bachelor's degree work. Any suggestions? |
|
|
Guido Bartolucci
2018-06-04 06:39 #
Alright, so this is interesting and makes me think it's something related to our goals: My seven-year-old son just made a "printer" in Minecraft. It is a mechanical device that iterates a line at a time with pistons pushing up the ink into the paper, using gravel in between other pistons that push the paper out. So, I'm thinking that the constraints of Minecraft are what make it such a great place for experimentation like this. You work with what you have. But can still do just about anything. Is there something we can learn from sandbox games like this to improve how we instruct computers to do what we want? |
| 5 comments | |
|
|
Aidan Cunniffe
2018-06-02 14:31 #
What are some good conferences we can attend to meet more people interested in this space? |
| 16 comments | |
|
|
William Taysom
2018-05-30 19:28 #
@Guido Bartolucci Funny you mention 0.1 + 0.2. I recall giving a quite the "presentation" to my colleagues when some millions were at stake. We've been moving our arithmetic to the server ever since. Leads to the only general principle of interactive systems that I have any confidence in. Progress is when there's something you used to worry about, but now you don't. Regress is when there's something you used to never worry about, but now you do. And reality is the two perpetually come in pairs. |
|
|
Guido Bartolucci
2018-05-30 13:10 #
Here's a small value that I believe strongly in: 0.1 + 0.2 should be equal to 0.3 by default. IEEE 754 shouldn't be the default for non-integers. |
|
|
Stefan Lesser
2018-05-30 12:05 #
I was thinking recently that it would be great to have a list of values, sort of a manifesto, not unlike the Agile Manifesto, to at least have a discussion about the values we share, and to find out where we differ. I think a lot of research is opportunistic (and that's not a bad thing), but lacks a big picture of where we want to take this. Ultimately, it should be something that allows developers of different platforms and languages to unite and at least discover shared values. One other thing we're incredibly good at is building all these silos of different language and platform communities, where we can all re-invent wheels all the time. I think there is a benefit in this language diversity, but it's hard to reap, because these different communities seldom talk to each other. |
| 22 comments | |
|
|
Guido Bartolucci
2018-05-30 11:50 #
Is there a proverbial puck that we should all be skating to? Replacing Windows was the puck for the longest time. Maybe we should be skating to CRISPR-in-your-garage DIY generic engineering? |
| 1 comments | |
|
|
Jonathan Edwards
2018-05-30 04:59 #
Great aspirations here! The bad news is many people (sadly myself included) have had been fighting the good fight for decades now with only scars to show for it. I'm starting to think that we have a meta-problem: we lack an evaluation methodology which enables us to make incremental progress. You can't single-handedly build a whole new way of programming in a single stroke. Scientific progress happens because people build upon each other's results validated by objective experiments. But empirical experiments on programming have had very limited value. In practice we seem to judge programming research by "coolness". I conclude that coolness has failed us and we don't know what else to use. We must solve this methodology problem before we can make progress on programming. [I'm beta-testing this idea and would appreciate criticism] |
| 10 comments | |
|
|
William Taysom
2018-05-26 07:08 #
There is a sort of funny disconnect between, say, C's model of sequential execution on large linear chunks of memory and the reality of what that gets compiled to on a modern CPU (let alone networks, GPUs, and more exotic processors). |
|
|
Guido Bartolucci
2018-05-26 06:24 #
I know this all sounds esoteric and pedantic when what we really want is just a better way to program, but I'm particularly fed up with our relationship between the higher level languages and the underlying computer. I feels to me (I wish I had something less subjective than "feels") that the assembly language and machine language interface that we all attempt to compile out programs down into is part of the problem -- That is, it restricts our thinking of what is possible with computable machines. |
| 4 comments | |
|
|
Guido Bartolucci
2018-05-26 06:21 #
I wrote in my notebook the other day that "I think the magic part, the part that makes the inanimate object animate, is the partitioning of time into discrete units and feeding the output of the previous operation to the input of the next." I'm not sure that's right yet, but it feels like I'm making progress. |
|
|
Guido Bartolucci
2018-05-26 06:20 #
Speaking of sums and products, the area that I'm spending my time right now studying is how combinatorial sums and products "magically" turn electrical signals with some gates into a computer that can do anything. I say magically because it still feels like magic to me. I'm starting to get a feel like I'm getting an intuitive feels for it, but I'm still not quite there, though I can feel that it's close. |
|
|
Guido Bartolucci
2018-05-26 06:14 #
Hi @William Taysom, Thank you for the suggestions. I actually already read Lawvere and Schanuel, but a lot of it was over my head. I'll try out Seven Sketches next. |
|
|
William Taysom
2018-05-26 03:26 #
@Guido Bartolucci That's what you get for sharing your reading list. :wink: On Category Theory, you may find success with "Seven Sketches in Compositionality: An Invitation to Applied Category Theory" https://arxiv.org/abs/1803.05316. (Just started though Fong and Spivak have certainly have written other interesting things.) Math texts often devolve into a trite definition-theorem-proof style with little justification for why those specific definitions, theorems, and proofs are of special interest. Category Theory doubly so as a framework for understanding mathematical relationships. Take Awodey's text https://www.amazon.com/Category-Theory-Oxford-Logic-Guides/dp/0199237182/ as an example. Riehl presents a thorough argument answering "why Category Theory?" aimed squarely at mathematicians https://www.amazon.com/Conceptual-Mathematics-First-Introduc…. What about the rest of us? There's Lawvere and Schanuel introduction https://www.amazon.com/Conceptual-Mathematics-First-Introduc… that amounts to "gee-whiz sums and products make sense for all sorts of things besides numbers." On that backdrop, I'm hopeful that Fong and Spivak will prove a more provocative introduction for people like you Guido: more substance than Lawvere and Schanuel, less esoteric than Riehl. (Some of you may notice that this approach to talking about a book is categorical in the sense that I described one in its relation to others.) |
|
|
Guido Bartolucci
2018-05-25 12:40 #
Oh man, now you guys are presenting me with even more to read. This is much more than a full time job! |
|
|
Guido Bartolucci
2018-05-25 12:33 #
I find the idea of TTAs particularly intriguing, that is, computers where you just move data between FU to FU rather than having normal instructions, and I'm intrigued by FPGAs. |
|
|
Guido Bartolucci
2018-05-25 12:31 #
I've been mostly concentrating recently on the design of the processors, I know that it's not as important as how we program, but some how I found myself in this rabbit hole after asking "why" too many times and now I don't want to write a programming language for a normal CPU. :stuck_out_tongue_winking_eye: |
|
|
Guido Bartolucci
2018-05-25 12:30 #
Like I said, I've been doing this alone with the occasional email to a former colleague, but I'd like to get good discussions going with others. |
|
|
Guido Bartolucci
2018-05-25 12:28 #
I've been keeping my notes on GitHub for the last several months: https://guidoism.github.io/escape/ though it's not very well organized, and I'm mostly just updating my plan of study: https://guidoism.github.io/escape/study |
|
|
Guido Bartolucci
2018-05-25 12:25 #
And I'm using my time right now to learn about the bazillion parts of computing that I've always been ignorant of. I'm going closer to the maths and learning about category theory and types and stuff. And I'm going closer to the electricity learning about how microprocessors actually work. |
|
|
Guido Bartolucci
2018-05-25 12:24 #
In my career I've been mostly an infrastructural programmer, I designed and built a lot of the plumbing for those companies, plumbing of distributed systems, not water. :slightly_smiling_face: |
|
|
Guido Bartolucci
2018-05-25 12:23 #
Hi all, I just joined and found out about this because of @Dan Cook's website. My background is probably similar to all of yours, I'm fed up with the state of computing. I've worked for 18 years in the tech industry (Google, Amazon, and a start-up) and recently left the working world in order to slow down, read all of those books that have been piling up, and attack this problem without the troubles of trying to fit this into a money making enterprise. So, for now it's just me reading a lot, taking lots of notes, and doing a few small programming experiments. |
|
|
Daniel Garcia
2018-05-23 10:31 #
Hi @Dan Cook, welcome! > I'm say that much of the problems we see in software, also exist in the physical & built world ... I am really interested in knowing more about your thoughts on this. Do you have some writings about it ? |
|
|
Steve Krouse
2018-05-23 08:11 #
Wow - welcome, welcome @Dan Cook and @Davide Della Casa! Glad to find another community of fellow VPRI nerds. (For completeness, there are two other such places I know about: http://discuss.tbd.cool/ and https://www.reddit.com/r/nosyntax/). This slack was started by @Irvin Hwang for NYC "future of programming" folks but has now become a more-than-NYC chatroom for semi-random discussions and link sharing. Would love to chat soon - will DM you :) |
| 1 comments | |
|
|
William Taysom
2018-05-23 04:09 #
@Dan Cook Welcome to the club. |
|
|
Dan Cook
2018-05-22 20:21 #
A bit more context: I'm a software engineer of 5 years, who is very disappointed at what "professional" software means. I'm also a father of 3 humans and 3 non-humans |
|
|
Dan Cook
2018-05-22 20:18 #
(I'm also new to slack, btw) |
|
|
Dan Cook
2018-05-22 20:17 #
BTW, I have assumed a 1:1 mapping between this slack domain, and Steve's website. Is that assumption correct? ... Anyway, look forward to whatever comes |
|
|
Dan Cook
2018-05-22 20:15 #
Anyway... Upon finding this place, my original hope was to get this Steve Krouse guy to join our collaboration; but perhaps it should be the other way around! There is a lot of rich stuff here! I'd love to talk more some time, and perhaps get on a call to exchange some thoughts and viewpoints that are not so practical via text. I do think it would be great to share a picture of what we have done to collaborate and share, and compare with what is going on here at Future Programming; and then perhaps merge efforts and resources (or at the very least, collaborate between them). |
|
|
Dan Cook
2018-05-22 20:09 #
Alan Kay and Jim Coplien (via his DCI paradigm) helped me to realize that things could (and should!) be much better; Bret Victor showed me that it could be done, and in a way that is now human-oriented than I ever thought possible before. Bret, Jim, and Christopher Alexander helped me shift my view from an obsession of the technical and mechanical, to one focused on humans and a moral imperative to improve the way we shape the world with software. I've become especially interested in exploring the human component, and have found parallels in physical architecture, City planning, and design in general, which I constantly link back to software. Perhaps I'll share some later, but I'm say that much of the problems we see in software, also exist in the physical & built world, and in both cases the real solution is to stop substituting superficial technical goodness in place of real usability & human "goodness" |
|
|
Dan Cook
2018-05-22 19:58 #
My personal project can be found here: https://github.com/d-cook/Objects But is perhaps better described here (at the specific entry linked to in this URL): https://www.cemetech.net/forum/viewtopic.php?p=270092#270092 |
| 21 comments | |
|
|
Dan Cook
2018-05-22 19:55 #
Hi all (and Davide), I just joined. I found this group because ... well, I assume my story is similar to some of yours: stumbled across the likes of Bret Victor, Alan Kay, etc., realized that software and programming is far from what it should be, and I've been on a quest to improve it. I started my own project for a self-bootstrapping system capable of the engine of it's own modification, both from a programmatic and an end-user perspective. In the process, I found a group of like-minded people who all came out of the cracks when VPRI (a non profit started by Alan Kay) put an end to its mailing list about exploring fundamental new ways of computing. We all suddenly spoke to about our disappointment, and mentioned our own projects and research, and came together to form the following collaboration: https://github.com/d-cook/SomethingNew |
|
|
William Taysom
2018-05-22 10:39 #
Speaking of incidental complexity ('cus aren't we always), updated a little Ruby library today. Tiny bug, just need to add a line (and a test for it). After eight years of bit rot (evolution) in the testing library (Rspec), 507 test cases were restored to working order with 1800 lines of diff. |
|
|
William Taysom
2018-05-22 10:23 #
http://fizzygum.org/docs/similar-systems/ |
|
|
William Taysom
2018-05-22 10:23 #
Looks awfully Lively... "Fizzygum aims at being an alternative and independent re-implementation of a narrower scope, to focus on a smaller codebase that can be more easily understandable and modifiable." |
|
|
Davide Della Casa
2018-05-22 07:50 #
I thought you might be interested in something I made recently, a new web-based desktop system inspired by LISP/Smalltalk resident systems. (If you liked lively kernel or Caffeine by Craig Latta, you might like this) http://fizzygum.org |
|
|
Davide Della Casa
2018-05-22 07:49 #
Hi, new member here. |
|
|
Stefan Lesser
2018-05-20 06:41 #
I know we mostly talk about the “front end” part of the future of programming, e.g. visual languages. This article is about the “back end” and asks some interesting questions about how that future could look like: https://queue.acm.org/detail.cfm?id=3212479 |
|
|
Aidan Cunniffe
2018-05-11 10:56 #
https://medium.com/optic-blog/weekly-update-april-22nd-to-may-7th-27d5b5ae64a1 |
|
|
Stefan Lesser
2018-05-04 09:05 #
I have huge respect for Mike Matas and his team. They managed to make a very technical topic accessible to a wider audience thanks to outstanding design. Sure, you still need to understand what you’re doing, but they just made it so much more engaging and playful that you want to learn more. |
|
|
William Taysom
2018-05-04 00:57 #
So much potential with ML. Glad to see a clean interface, makes it more worth trying for those who may benefit. |
|
|
Stefan Lesser
2018-05-02 22:37 #
Visual programming to create machine learning models: https://lobe.ai/ |
|
|
Daniel Garcia
2018-04-27 21:17 #
Thanks for your comments @Steve Krouse! hs.js is really cool, you can take a look at my WIP visualization of recursion https://lambdabricks.github.io/exploring-recursion/ |
|
|
Steve Krouse
2018-04-27 19:28 #
Fun! I love the way the output of the reducer comes back around. That's a clever visual animation One comment: there's no visual grouping structure for your lists. They're just numbers floating next to each other. Relatedly, there's nothing about the input and output shapes to imply their types, which I'm always a fan of: https://medium.com/@stevekrouse/types-are-shapes-d6af1e83192f Semi-relevant: I worked on a similar interactive widget for teaching HOF a few years back: http://stevekrouse.com/hs.js/ |
|
|
Daniel Garcia
2018-04-27 17:08 #
Hi! I created some animations to explain what happens internally with the map & reduce functions. These animations are part of a Visual Programming Language I'm working on. Any feedback is welcome ! https://lambdabricks.github.io/animating-hofs/ |
|
|
William Taysom
2018-04-26 23:11 #
Yes, I think creative repurposing is what makes a hack a hack. As the repurposing becomes less creative and more standard, the hack becomes a technique. In finding the tool reuse sweetspot, consider how the web (and for programming, Stack Overflow) has altered the calculus. Looking over my browser history, I'll venture that Git would have not been nearly as sucessful without it. Connection, not raw computation, gives a computer its value. Embodiment, not raw cognition, gives intellegence its agency. |
|
|
Stefan Lesser
2018-04-26 09:21 #
So for me this boils down to: If the tools we create are too abstract, e.g. just providing a generic programming language, they are maximally generic, can apply to every use case, but lack any connection points to the domain knowledge a specific user has, therefore the learning curve is too steep and regular users won’t adopt this tool. If the tool is too specific, e.g. implementing a flight booking process with all bells and whistles, it is maximally specialized, only applies to this exact use case and is hard to repurpose, but is easily understood, and can be used by non-programmers, but they can’t use it for anything else. If we want to enable non-programmers to create software we need to find a sweet spot in between, allowing them to find a connection point to understand what the tool can be used for in their domain, enabling them to creatively repurpose it for what they want. |
|
|
Stefan Lesser
2018-04-26 09:02 #
I wasn't judging when I used the word "hack"! In fact, if I was judging, I'd point out the positive aspect of applying creativity to find a new use case for something that was built with a different use case in mind. For me that is the original definition of what "hack" means, before movie culture turned it into this "bad actor is breaking the rules and causing trouble" definition. So I guess the difference between "hack" and "technique" for me is pretty small. Maybe a technique is a hack that is broadly accepted as a valid way of doing things, while a hack can be every creative repurposing of something, which sometimes isn't necessary useful, but instead has other qualities, like being surprising, impressive, or just fun. The point being: you are using a tool that allows creative repurposing. Many simple apps these days are so sophisticated that they can only be used for one specific use case, and repurposing them for anything else is just too hard to do or doesn't yield any benefits for the user. It seems to me that a lot of creative domains have settled on well-known tools that are specific enough to be easily understood and yet generic enough to allow creative repurposing. Every image editing software has certain tools that are expected. By composing them (for instance in using them on the same artwork in a certain order) users can create infinite amounts of different results with them. Same with video editing or 3D modeling or music production. I'm not an expert in any of these domains. With my basic understanding of music production I see the same patterns there: There are certain well-understood tools (e.g. sound sources based on additive or subtractive synthesis or sample playback) with well-defined parameters (e.g. ADSR curves) and well-established UI/UX patterns (e.g. placing MIDI notes on a grid or scrubbing through a waveform representation of a sample) composable in sequence or in parallel to generate more complex sounds, aka music. |
|
|
William Taysom
2018-04-25 19:55 #
@Stefan Lesser Could you elaborate on what music production is like for you? I know nothing about related software tools except that they appear to be the last bastion of skeuomorphism. |
|
|
William Taysom
2018-04-25 19:53 #
This quote comes to mind, "[F]or most of us, even a simple image manipulation in Photoshop presents insurmountable difficulties... any less-than-perfect edit immediately makes the image look completely unrealistic. To put another way, classic visual manipulation paradigm does not prevent the user from “falling off” the manifold of natural images" https://distill.pub/2017/aia/. (Programming language syntax has a similar fall off.) The rest of the article is well worth the read. They have high aspirations, "Ideally, an interface will surface the deepest principles underlying a subject, revealing a new world to the user. When you learn such an interface, you internalize those principles, giving you more powerful ways of reasoning about that world." |
|
|
William Taysom
2018-04-25 19:41 #
Those feel pretty Hacky. As a meditation on what makes interaction hackish, I offer Stephen's Sausage Roll. The game has a lovely way of turning an action that results in epic failure in one level into an essential technique in another. |
|
|
William Taysom
2018-04-25 19:33 #
Or how Chris Schmidt uses soft body dynamics to animate an opening title https://www.cineversity.com/vidplaytut/nab_2015_rewind_chris_schmidt. |
|
|
William Taysom
2018-04-25 19:32 #
Consider this how Jon Schwabish improves this chart in Excel http://thewhyaxis.info/defaults/. |
|
|
William Taysom
2018-04-25 19:31 #
@Stefan Lesser What is the line dividing a hack from technique? Is there one? Depends on experience and expectations? One man's hack is another's best practice? Deleting a bevel seems a natural way to create a gap between repeated elements, no more of a hack than accomplishing anything in HTML and CSS. |
|
|
William Taysom
2018-04-25 19:15 #
@Chancy Kennedy With good old Smalltalk, I would ruin my image on a regular basis. Would love to see the inspect and manipulate paradigm coupled with reasonable isolation and recovery. Web browsers these days seem to be doing the OS job even has DOM inspection crude as it is. |
|
|
Chancy Kennedy
2018-04-25 15:41 #
you would need the behavior contract as well; you're allowed to query this endpoint once per minute, etc. |
|
|
Chancy Kennedy
2018-04-25 15:38 #
maybe a service that solely indexes public data with the routes and parameters would create an environmental pressure that forced the services to be more consistent, kind of like Google for unstructured web data |
|
|
Chancy Kennedy
2018-04-25 15:37 #
if there were any consistency to discovering what endpoints web services expose, maybe it could find them without previous knowledge |
|
|
Chancy Kennedy
2018-04-25 15:35 #
The first interesting step might be to guess what endpoint is relevant and how to pass parameters to it that are relevant to the inquiry. |
|
|
Chancy Kennedy
2018-04-25 15:33 #
but "download the data from this web endpoint and plot it based on X" seems like something you could implement as an Alexa skill |
|
|
Chancy Kennedy
2018-04-25 15:29 #
It feels like an AI that could interpret raw data would need to be extremely general with a vast scope of knowledge. :thinking_face: |
|
|
Chancy Kennedy
2018-04-25 15:28 #
It seems like you'd be solving for "what's meaningful about this data?", and separately, "how do I handle errors in the data or unstructured data?". The latter would seem to be the culmination of years of circumstantial experience on the part of whoever it trying to analyze that data. Is this dataset still meaningful if I discard these rows given my current objective? What process caused the errors in this data and do I need to address that before proceeding? |
|
|
Mikhail Fedorenko
2018-04-25 15:21 #
That's more of what I had in mind. Alexa parse this dataset and graph the 4 best options based on price |
|
|
Chancy Kennedy
2018-04-25 15:19 #
It will be interesting to see how a more general intelligence manifests that might be able to relate unknown datasets on demand, and answer questions meaningfully. |
|
|
Chancy Kennedy
2018-04-25 15:19 #
In the latter two cases, we currently just query a database that's been configured externally to answer the questions, and it's more a feat of parsing basic semantics from speech. |
|
|
Chancy Kennedy
2018-04-25 15:18 #
"filter my photos for pictures of dogs" "play music X" "what's the temperature?" |
|
|
Chancy Kennedy
2018-04-25 15:17 #
In terms of AI, it currently seems like a game of understanding what the AI has access to or what specialty it's been trained for. |
|
|
Chancy Kennedy
2018-04-25 15:08 #
All for our opinionated implementation of the ToDo list. |
|
|
Chancy Kennedy
2018-04-25 15:07 #
say for a Python website we have the CPU instructions, the interpreter/compiler written in C, the modules/packages written in Python, the TCP/IP/HTTP networking stack, HTML/CSS/Javascript for rendering the GUI on top of a runtime written in C++ or Rust or ??? that is the browser. :exploding_head: |
|
|
Chancy Kennedy
2018-04-25 15:02 #
My layer of abstraction is the paradigm exposed to me by the language, be it actors Erlang, or Go routines, or callbacks in Javascript, object-oriented, functional, etc. |
|
|
Chancy Kennedy
2018-04-25 15:01 #
Most programmers are just users as well of the compiler authors or CPU designers. |
|
|
Mikhail Fedorenko
2018-04-25 14:59 #
The gps has me wondering if levels of abstraction are good measure for trying to figure out what it means to be a user or a programmer. if in the future for example, everyone's main interface for interacting which a computer is a AI that does interface and data management. Who is the programmer in that case? |
|
|
Chancy Kennedy
2018-04-25 14:56 #
It seems something like Smalltalk should be the norm that one can inspect and manipulate without having to know how the universe was built from each grain of sand first. |
|
|
Chancy Kennedy
2018-04-25 14:44 #
Good luck adding a new tool to GIMP as a graphic designer. |
|
|
Chancy Kennedy
2018-04-25 14:44 #
In open source software, at least it's an option, but still a daunting task. |
|
|
Chancy Kennedy
2018-04-25 14:43 #
I think one issue with the layers of abstractions in software is that the escape hatch when something doesn't work properly at the higher level is often completely unapproachable to the person that's bumping into the limitation. The tear it open and see how it works experience just isn't the same as the physical world. :laughing: |
|
|
Mikhail Fedorenko
2018-04-25 14:43 #
Yeah exactly |
|
|
Chancy Kennedy
2018-04-25 14:34 #
@Mikhail Fedorenko GPS almost seems like the inverse of working with music, in that there's a tremendous amount of science and complexity to make it possible, but we interact with it in a very minimal way. Where am I? Where is something else? How do I get there? |
|
|
Stefan Lesser
2018-04-25 02:49 #
I see what you mean. Another interesting thing right where you linked into the video is how he creates the grid of independent polygons. He found a way to start with a plane, increase the polygon count, then use a bezel feature to create the gaps. That’s a hack! In the sense of “using a tool for a different purpose than it was created for” and it works brilliantly. I’m sure there are tons of other ways to get to the same grid of square polygons, but that one is probably quite efficient. I think that's also an important property of a good tool. With creativity you can find new ways to use the tool that hasn’t been part of the initial design. Not everything has to be designed by the creator of the tool. But that is often how we as software engineers approach it. This let's us as programmers without domain knowledge get a little bit “off the hook”. If we design tools good enough to be useful, but abstract enough to be somewhat generic (open to other use cases and interpretations), and combine that with ways to compose different tools together, we can enable regular users (who have the domain knowledge) to find new ways of using them; ideally coming up with better ideas like the “create a grid” shortcut in the video. You can find examples like this in music production as well as spreadsheets; even in things like Twitter, where creative users started to come up with conventions for retweets and tweet storms, until they became proper features. |
|
|
William Taysom
2018-04-25 02:12 #
Instead of being hidden away in a menu, the tool is hidden in the user's mind until he manifests it – and actually adds it to the menu. |
|
|
William Taysom
2018-04-25 02:12 #
Here. https://youtu.be/rjN2P-MGe28?t=15m40s The linked part of the video is where it gets good. From the beginning will help you get oriented if mesh modeling is new to you. |
|
|
William Taysom
2018-04-25 02:07 #
Let's see. An example, an example... |
|
|
William Taysom
2018-04-25 02:07 #
Alas, simple, highly composable tools end up nearly as obscure ironically in proportion to their productivity. The more novel, powerful, and remarkable the effect of combining tools, the less obvious and discoverable (all things being equal). |
|
|
William Taysom
2018-04-25 02:02 #
Moreover, any sufficiently large garden will have it's own mazemire inside. How often does the app already have the feature, you just don't know it! |
|
|
William Taysom
2018-04-25 02:00 #
What about software tools? If the goal-apple is within the walled-garden, then it's just a matter of using the tool as designed. Outside? Behold the Turing Tarpit! Do without, slog, or build "a huge portion of basic application functionality" to get through. |
|
|
William Taysom
2018-04-25 01:57 #
Excelent conversation friends. The attitude of being ready-to-hand on a continuum strikes me as the theme. Suppoe you wish to grasp something, an apple, on the table. Just reach out. You mastered this technique as an infant. The apple is in the? Stand up, walk over, reach out. None at home? Better head to the shop or choose an orange. Certain means, tools are right-ready to use through familiarity, practice, and intrinsic affordance. |
|
|
Mikhail Fedorenko
2018-04-24 19:30 #
but that kinda leads down the rabbit hole of what does requesting information from a already built database count as |
|
|
Mikhail Fedorenko
2018-04-24 19:29 #
Slightly out there, but this conversation has me wondering if getting a route from a GPS counts as programming. Getting from point A to B is a very well defined problem, that at one point had people who were experts in the field. All of the “hard technical” components(interface building, satellites, path finding) have been engineered out. |
|
|
Chancy Kennedy
2018-04-24 12:44 #
Something like Tasker on Android is interesting because it exposes a large portion of the OS functionality (notifications, launch screen, etc.) without having to reinvent an "app" from scratch, and back to your point of Excel; it provides an abstracted level of automation to users that they've actually been able to leverage to a great degree, where something like basic Android OS widgets are completely inaccessible to the uninitiated. Tasker sort of addresses this but is still a huge barrier to entry. |
|
|
Stefan Lesser
2018-04-24 12:41 #
True! That’s why it should be dead simple to build one yourself. Without any programming experience. |
|
|
Chancy Kennedy
2018-04-24 12:40 #
Yet I still can't find one that behaves as desired. :sweat_smile: |
|
|
Chancy Kennedy
2018-04-24 12:39 #
Well, case in point, we could look at the various permutations of the To-Do list in a mobile app store. Yet each one of those has been forced to re-architect a huge portion of basic application functionality, which is surely more complex than the domain functionality they're exposing. |
|
|
Stefan Lesser
2018-04-24 12:33 #
Aren’t a huge number of apps just fancy views on data in a database, with defined UI idioms to manipulate the data, or the views on it (sorting, filtering, selecting, editing, etc.)? I don’t think this category of apps is much more complex than music production or video editing; I’m tempted to argue that this category of apps is even simpler, but that’s a different discussion. Sure, there are other categories of use cases that need more sophisticated algorithms and data structures and domain modeling. Why not leave that stuff to expert programmers for now (Hey, at least some of us get to stay employed then), and enable other people to build their own simple apps that just display and manipulate data? I’m surprised that most attempts at visual programming try to recreate the full power of a programming language. That’s a noble goal, and apparently very difficult, looking at how many times it has been tried over the last half-century. If the people we want to enable to create apps aren’t programmers anyway, why promising them the full power of a programming language? |
|
|
Chancy Kennedy
2018-04-24 11:34 #
As opposed to something like writing software to facilitate the process of managing title for land ownership. Where you might be trying analyze rules that were never consistent or well designed in the first place, which very heavily from place to place. |
|
|
Chancy Kennedy
2018-04-24 11:31 #
@Stefan Lesser Music almost seems like an easy case in that there's an end product that's rooted in physical properties of reality, and they are fundamentally fairly simple rules that can be combined in complex ways. The resulting product is also heavily subjective so you don't have hard failures any many ways. |
|
|
Stefan Lesser
2018-04-24 08:46 #
What I get from the article and the discussion so far: 1. There’s domain knowledge and the challenge to translate that into a software system. This knowledge is in the heads of domain experts (the potential future users of the software system). Often these people are not programmers. 2. There’s skill involved in architecting software systems, so you end up with a system that has helpful properties like being easy to understand, extensible, efficient, etc. This knowledge is in the heads of programmers, who often don’t have experience in the specific domain they develop the software system for. The key idea is to enable domain experts without programming experience to put together software systems. What I miss in the article is that they are saying the future is “no code” or “less code” and instead something visual. They don’t say much about what that something visual would look like. Which is exactly the hard part. For some domains we seem to have made good progress to find acceptable abstractions to design such components. I often like to use music production or video editing as examples — domains with lots of complexity and powerful tools that don’t require programming skills (but a lot of domain knowledge). Somehow we haven’t figured out how to do that for our own domain yet. Maybe that’s a sign that we always need a specific domain. I don’t think so, but it’s a valid argument and obviously not proven. I like to think spreadsheets are a counter argument to that, looking at all the strange ways non-programmers have found to make them work for their use cases. |
|
|
Chancy Kennedy
2018-04-24 08:34 #
It's kind of like the God proof of the human eye when you're lacking the evolutionary steps that led to it. |
|
|
Chancy Kennedy
2018-04-24 08:32 #
@William Taysom I'd say it's even more layered than that as well. There's the "can we even solve problem A of some complexity," and then "what's the effort for someone to understand the solution enough to modify the program without the experience of the original author(s)." |
|
|
William Taysom
2018-04-24 05:27 #
Consider the Able Services facilities management company from the article. Suppose Squibb has purchased a most remarkable, intelligent, loose end tying, project management automating system. Let's call this agent "Consultant". Even for Consultant (who understands plain and not so plain English, who asks questions, who gives feedback) to be useful to Squibb's team, they need to be able to tell Consultant what the types of buildings are, what kind of employee can do what job, what constraints there are on schedules – you know, the business logic. Said "logic" is unlikely to be found in any one spreadsheet, document, or person. More likely than not, the individual conceptual ingredients – even after being distilled from the individuals and placed on the table – don't combine into a coherent whole. Getting those ideas sorted out amounts to bridging a conceptual complexity gap. |
|
|
William Taysom
2018-04-24 05:05 #
By conceptual complexity gap, I had in mind the process of coming to understand a domain itself – what the conceptual entities are, what relationships they have, how the relationships evolve over time, what needs to be a certain way, what's a convention, how it's all tied together – independent of terminology, notation, user interface, and certainly any detail relevant to implementing an aspect of the domain in a software system. |
|
|
Stefan Lesser
2018-04-24 03:58 #
Can you explain what exactly you mean by “complexity gap”, @William Taysom? |
|
|
Steve Krouse
2018-04-24 03:10 #
You're proposing that it's harder for (2) to train (2)? |
|
|
William Taysom
2018-04-23 20:12 #
Perhaps this helps explain how tools alleviating accidental complexity often fail to be the enablers that we hope. Knock down the accidental constraints wall for someone, and they won't have the experience to tackle the conceptual one standing behind. |
|
|
William Taysom
2018-04-23 20:06 #
Software development seems to come down to two related skills. (1) Bridging the accidental complexity gap between ideas and the machine. (2) Bridging the conceptual complexity gap between a confused and clear understanding of ideas. Over a career, the ultimate value of (1) may come from how it trains (2). |
|
|
Mikhail Fedorenko
2018-04-23 10:46 #
also there was a article on HN about a company that provide a visual interface for people to write applications on their platform https://www.inc.com/greg-satell/how-no-code-platforms-are-di… |
|
|
Mikhail Fedorenko
2018-04-23 10:43 #
thanks! shows great too! |
|
|
Steve Krouse
2018-04-21 09:26 #
Thanks for listening! I'm terrible about writing up my past projects - they embarrass me so. Here's the best write up I currently have on it https://docs.google.com/document/d/1gt4SDLgCSeKa_h1seWtriPFsve8aYHzdhuADWas2j0c |
|
|
Mikhail Fedorenko
2018-04-21 09:00 #
hey, i’ve been listening to the podcast and i was wondering if there was anything done with the workflowy / git tool? |
|
|
Caleb Helbling
2018-04-17 15:23 #
iirc, they've done a lot of work with a Ruby interpreter that is much faster than the standard one |
|
|
Caleb Helbling
2018-04-17 15:21 #
The other project is called Truffle |
|
|
Caleb Helbling
2018-04-17 15:21 #
I believe they've also done a lot of work with automatically generated interpreters with JIT support |
|
|
Caleb Helbling
2018-04-17 14:12 #
Discussion is here: https://news.ycombinator.com/item?id=16859559 |
|
|
Caleb Helbling
2018-04-17 14:12 #
@Aaron Kent thought you might be interested |
|
|
Caleb Helbling
2018-04-17 14:11 #
I saw this on the front page of Hacker News just now. I've known about Graal/Truffle for a while now. Looks like they're making good progress: http://www.graalvm.org/ |
|
|
Steve Krouse
2018-04-16 07:39 #
Edward Tufte is coming to Brooklyn May 18! Just signed up for his one-day course. Anyone else going? https://www.edwardtufte.com/tufte/courses |
|
|
Chancy Kennedy
2018-04-09 08:45 #
@William Taysom Thanks for the detailed response on Eve! |
|
|
William Taysom
2018-04-07 20:27 #
Whenever I see a wires-programming tool, I can't help but think of Robot Odyssey. |
|
|
William Taysom
2018-04-07 20:26 #
Oh, someone's been working on that. More polished than when I first tried. Is there a gesture/command for inserting a patch on an edge? Seems like the most natural way to adjust. Has the bonus that you could filter patches by input and output type. |
|
|
Steve Krouse
2018-04-07 04:27 #
Haha I'm going through that phase now actually... Facebook's Origami is surprisingly fun to play with |
|
|
William Taysom
2018-04-07 04:26 #
Nodes and wires is a phase we all go through – sometimes more than once. |
|
|
Stefan Lesser
2018-04-07 02:05 #
Clearly, I’m getting old. This is a WWDC 2018 scholarship submission: https://github.com/NathanFlurry/VisualProgrammingLanguage |
|
|
William Taysom
2018-04-05 20:45 #
Technically, Eve totally doesn't work this way. Instead of binding to the future, commits are primitive. To establish a regular binding, say an Idyll [derived name: "x2" value:x * x], you basically use two commit rules internally. You commit x2 to the value of x * x. This makes it so that as x changes with time, x2 will assume the different squared values. You also add the commit rule that if x doesn't have a value, remove the value of x2. That's the edge case. Beyond that, Eve commit and bind rules work differently when multiple rules influence a value. With commits, it's a race. Whoever updated last wins. With bindings, we allow for ties. Suppose that we also cheekily bind x2 to x * 2. Then x2 will usually (except at 0 and 2) have two values. (Variables in Eve are intrinsically multivalued.) In order to implement the x2 = x * 2 binding with commits, the positive commit rule needs the side condition that if x2 != x * 2 the rule should fire again. I was never particularly satisfied with how Eve resolves these races. (The answer changed from version to version.) I doubt there is an universally satisfying answer in principle. (Kind of like the inheritance diamond problem.) We are never going to get away from confusing edge cases, better to design ambiguity resolution into our programming systems. |
|
|
William Taysom
2018-04-05 20:32 #
Having thought through what I'm about to say, it boils down to whether time is implicit or explicit in the system. Consider. Reactive systems generally provide a means to define transformations between categories of data so that when you wiggle one, the connected ones wobble in a corresponding way. The system has to respond to the action of wiggling, but it doesn't necessarily model wiggling reactively. Let's look at Idyll. (It is really nice.) Their introduction example is quite rich enough https://idyll-lang.org/docs. Variables can be numbers –– and most anything else: func will work with any function taking a number to a number. They even have buttons to switch between Math.sin and Math.cos. As far as I can tell, the model of time is just that of JavaScript: objects have properties, you can change them. Idyll does the job of making sure that related properties (the internals of the chart) get updated when you switch the func. It's lovely. Are there an alternatives to relying on an imperative substrate? Several. In Eve, rules can create persistent bindings like Idyll, but rules can also commit something to the future, "When the 'cos' button is clicked, make it so that in func = Math.cos afterwards." In principle, you can ask, "Why is func == Math.cos?" And the system can answer, "it's because someone clicked the 'cos' button a few seconds ago." You can even ask, "why isn't it Math.sin anymore?" One answer is to look at all the things that influenced func between now and the last time its value was Math.sin. Reactive synchronization across time. |
|
|
Chancy Kennedy
2018-04-05 08:36 #
@William Taysom Interesting. I only have a cursory familiarity with Eve. Are you familiar with how they were technically implementing the ability to evolve relationships? |
|
|
William Taysom
2018-04-04 19:06 #
I know Eve well and though it certainly had a significant live/reactive aspect, it's greater potential technical strength – though never fully materialized, certainly not visually – was its ability to have relationships evolve with time. |
|
|
Steve Krouse
2018-04-04 05:49 #
Yeah, it feels like a modern, React-y Tangle http://worrydream.com/Tangle/ |
|
|
Nicolae Rusan
2018-04-03 13:42 #
@Chancy Kennedy Idyll is really nice! Thanks for sharing |
|
|
Chancy Kennedy
2018-04-03 10:16 #
The Maria live demo is here: https://www.maria.cloud/intro |
|
|
Chancy Kennedy
2018-04-03 10:16 #
Here's a nice demo of Idyll in action: https://mathisonian.github.io/trig/etymology/ |
|
|
Chancy Kennedy
2018-04-03 10:13 #
Both of these are interactive document style interfaces, maybe a bit similar to the final stages of Eve as well. |
|
|
Chancy Kennedy
2018-04-03 10:11 #
https://github.com/mhuebert/maria |
|
|
Chancy Kennedy
2018-04-03 10:11 #
https://github.com/idyll-lang/idyll |
|
|
Chancy Kennedy
2018-04-03 10:11 #
Hello! I just wanted to drop in and share a couple of interesting projects I've bumped into. |
|
|
Willa Drengwitz
2018-04-03 10:10 #
Welcome! |
|
|
Roie Schwaber-Cohen
2018-04-03 10:06 #
@Murukesh Sadasivan signed up :wink: |
|
|
Murukesh Sadasivan
2018-04-03 01:29 #
Hi All, I am Murukesh, creator of Codeflow (http://codeflow.co) - a visual programming platform built on top of Node.js - Happy to discover this group of folks interested in alternative programming approaches. |
|
|
Jonathan Edwards
2018-03-12 13:53 #
I'm co-organizing the Live Programming Workshop at SPLASH in Boston this November. Please consider submitting your work. https://2018.splashcon.org/track/live-2018-papers#About |
|
|
Aaron Kent
2018-02-24 20:17 #
http://www.calebh.io/Unifying-the-Software-Toolchain/ |
|
|
Nicolae Rusan
2018-02-09 10:02 #
may well follow along too! |
|
|
Nicolae Rusan
2018-02-09 10:02 #
@Shriya Nevatia This looks great! Thanks for sharing :slightly_smiling_face: |
|
|
Shriya Nevatia
2018-02-08 22:40 #
hi everyone! thanks for letting me know about this @Steve Krouse. i've been listening to the podcast & really enjoying it. i visited dynamicland last night & i'm currently starting the learning creative learning course by the media lab http://learn.media.mit.edu/lcl/ -- excited to get back into these ideas |
|
|
Steve Krouse
2018-01-29 07:28 #
In honor of Eve's valiant efforts, I thought it could be fun to pay tribute at the next meetup: pick your favorite Eve prototype to present to the group for discussion. Sound fun to !everyone (or anyone)? |
|
|
William Fry
2018-01-24 13:45 #
https://groups.google.com/forum/#!topic/eve-talk/YFguOGkNrBo |
|
|
William Fry
2018-01-24 13:45 #
Eve is shutting down :disappointed: |
|
|
Matthew Retchin
2017-12-20 10:36 #
@paraduct, just came across that website on my own and was going to share it here, only to find you beat me to it! |
|
|
Stefan Lesser
2017-12-15 09:14 #
It does look better on GitHub… :thinking_face: |
|
|
Stefan Lesser
2017-12-15 09:11 #
I've been thinking about capturing some of the best articles I read and videos I watched that are somehow related to our group here on a regular basis. This is an experiment that might stop anytime. If you like it, let me know, that'll help keeping me motivated. :slightly_smiling_face: Here's what I read in October (I know it's December now… there might or might not be a November and December edition coming soon…): https://gist.github.com/stefanlesser/44bea0bd888f82b4ad79fbacea1e21d4 |
|
|
paraduct
2017-12-12 18:46 #
http://discuss.tbd.cool/ |
|
|
Steve Krouse
2017-12-06 06:16 #
Really cool Michael Nielsen article came out yesterday https://distill.pub/2017/aia/ |
|
|
Sophie Smithburg
2017-12-05 06:03 #
cool, thanks |
|
|
Steve Krouse
2017-12-05 04:28 #
Sorry @Sophie Smithburg! I have more if you want to grab one... DM me :) |
|
|
Willa Drengwitz
2017-12-04 18:08 #
Lol, it's really nice zine |
|
|
Sophie Smithburg
2017-12-04 17:38 #
unfortunately i didn’t know about this until the @;channel |
|
|
Sophie Smithburg
2017-12-04 17:37 #
BRET VICTOR HAS ZINES AND I MISSED OUT ON THEM |
|
|
Steve Krouse
2017-12-04 07:23 #
!channel see y'all tonight :slightly_smiling_face: |
|
|
Joe Cohen
2017-11-28 06:27 #
i’m in |
|
|
Nicolae Rusan
2017-11-28 05:51 #
@Steve Krouse That's a really nice looking Zine :slightly_smiling_face: I'm around on Mon Dec 4th and up for Soho |
|
|
Steve Krouse
2017-11-28 04:53 #
Hey !channel - I was hoping to get one more meetup in before 2018. How does Monday, Dec 4th work for y'all in SoHo? Thumbs up or down if you can make it |
|
|
Mark Brudnak
2017-11-14 16:41 #
Hey Steve, I subscribed to your podcast a few weeks ago. I am listening from the beginning and am currently on #9. I appreciate you providing a forum to talk about the topic. |
| 1 comments | |
|
|
Willa Drengwitz
2017-11-06 15:08 #
@Steve Krouse I screwed up today and can't make it. |
|
|
Irvin Hwang
2017-11-06 13:24 #
Hey have a lot of work so don't think I'll make it have fun |
|
|
Matthew Retchin
2017-11-05 17:11 #
hey @Steve Krouse, I gave a thumbs up on the head count, but I don't know if I can make it this time, depending on how much work I have. so we'll see |
| 2 comments | |
|
|
Stefan Lesser
2017-11-04 10:55 #
A while ago I did a little interview series with game developers (that's not really relevant to this group, but if you’re interested: https://medium.com/@stefanlesser/). Now I’m thinking about doing a series with all kinds of software developers about productivity and complexity in software development. I believe these are two highly important areas of focus to figure out what software development should be like in the future. I don’t think the interviews will be as long as the game developer ones, ideally more like a 5-10 min read. I’d love your input on this! 1. What do you think about this? Does that sound interesting at all? Would you read interviews like that? 2. What questions would you like me to ask? What would you like to read about that broadly fits the productivity and complexity theme? I have a set of 15 questions ready, which I’m happy to share here, but I’ll leave them out for now, just to not frame the discussion upfront and shut out potentially interesting ideas that wouldn’t come up otherwise. Would also love to interview some of you. Let me know if you’re interested in writing responses to a set of questions about productivity and complexity in programming. My plan is to publish them as part of my (hopefully for real this time) upcoming blog about the same topics. |
| 2 comments | |
|
|
Niko Autio
2017-11-04 05:49 #
CLI vs GUI and what actually are the "CLI: Good parts" http://www.expressionsofchange.org/reification-of-interaction/ (HN: https://news.ycombinator.com/item?id=15619796) |
|
|
Steve Krouse
2017-11-04 05:27 #
Any suggestions to add to my future of coding twitter list? https://mobile.twitter.com/stevekrouse/lists/future-of-coding |
|
|
Steve Krouse
2017-11-03 12:06 #
!channel - wanted to confirm the meeting this upcoming Monday at @nicolaerusan and @kareem’s offices in Brooklyn (119 N 11th St, 3C) at 6pm on 11/6. Comment in this thread or give a thumbs up if you can make it so we have a headcount |
|
|
Willa Drengwitz
2017-10-30 04:06 #
Extremely relevant slide deck http://dev.stephendiehl.com/nearfuture.pdf |
|
|
Steve Krouse
2017-10-28 19:02 #
Amazing new talk from Chris Granger https://youtu.be/a_o-ZzgpiK8 |
| 8 comments | |
|
|
Joe Cohen
2017-10-25 16:55 #
hey folks! i’m joe and i’m working on http://onuniverse.com |
|
|
Steve Krouse
2017-10-25 14:35 #
!channel - we’re thinking the next FoP meeting will be at @Nicolae Rusan and @Kareem Amin’s offices in Brooklyn (119 N 11th St, 3C) at 6pm on 11/6. Comment in a thread if you can make it or have other ideas/suggestions |
| 1 comments | |
|
|
Paul Warren
2017-10-24 09:52 #
As much as I wish I could have attended yesterday, I had a prior commitment - still haven’t had the chance to meet all of you yet :) |
| 1 comments | |
|
|
Willa Drengwitz
2017-10-24 09:38 #
I hope @Sophie Smithburg @Steve Krouse @Irvin Hwang are feeling better despite the windstorm going on outside. Another big thanks to @Yair Chuchem for sharing his work, http://www.lamdu.org/, with us last night, hopefully he’s safely on his way back to Israel. Thanks @Kareem Amin @Paul Warren @Kyle Littler for attending, and then putting up with me kicking us out of Reaktor’s offices despite the good conversation going on. I was tired and couldn’t wait to get to sleep! Discussion was great and I can’t wait for this structural future to take over! |
|
|
Willa Drengwitz
2017-10-23 16:04 #
@Kareem Amin https://github.com/Datomic/codeq#codeq really cool thanks! |
|
|
Kareem Amin
2017-10-23 15:10 #
Hi I’m just downstairs I think I walked just a minute behind everyone |
|
|
Yair Chuchem
2017-10-23 09:02 #
Awesome |
|
|
Yair Chuchem
2017-10-23 08:31 #
@Willa Drengwitz meetup still on for today right? What’s the address and what time is it? I’m excited to meet with y’all :) |
| 7 comments | |
|
|
Stefan Lesser
2017-10-22 03:21 #
https://www.theverge.com/2017/10/19/16497444/coda-spreadshee… |
|
|
Steve Krouse
2017-10-18 09:39 #
|
|
|
Irvin Hwang
2017-10-17 17:25 #
hey are we still meeting the 23rd at the Reaktor offices? |
| 15 comments | |
|
|
Ville Vanninen
2017-10-14 12:50 #
https://twitter.com/ncasenmare/status/919219174311911424 |
| 1 comments | |
|
|
Willa Drengwitz
2017-10-09 10:48 #
What I’m currently reading for “work” related tasks =D http://www.omgsysml.org/SysML-Tutorial-Baseline-to-INCOSE-060524-low_res.pdf |
|
|
Yair Chuchem
2017-10-09 05:18 #
Looking forward to meet you guys at NYC :slightly_smiling_face: |
|
|
Yair Chuchem
2017-10-09 02:43 #
Hi everyone, Yair from Lamdu here, me and @Eyal Lotem are making an open-source structured editor for a functional language with live debugging and other nice features :slightly_smiling_face: |
|
|
Stefan Lesser
2017-10-06 11:06 #
They have this printed for people to take at Dynamicland. I suggest you refrain from blogging about it or sharing it otherwise publicly with a broader audience, but feel encouraged to share it with others on a personal basis. |
|
|
Willa Drengwitz
2017-10-04 11:41 #
Anyone used Petri Nets before to model anything? https://en.wikipedia.org/wiki/Petri_net |
|
|
Willa Drengwitz
2017-10-04 08:35 #
Hi Ville, welcome to FP!! |
|
|
Ville Vanninen
2017-10-04 04:49 #
Hi! I’m Ville, UX designer, author of Foolproof HTML |
|
|
Sophie Smithburg
2017-10-04 03:15 #
i’ve updated the notes a bit, but not added links to various references yet. maybe on my flight today, maybe not at all (unless people ask for them, in which case I will absolutely do it). |
|
|
Willa Drengwitz
2017-10-03 14:39 #
Hi Niko, Welcome!!! |
|
|
Niko Autio
2017-10-03 14:39 #
Hello everyone! //Niko is hopefully some sort of structural editor pioneer in some day |
|
|
Steve Krouse
2017-10-03 13:11 #
Also, in case anyone wanted to know more about structured editing, which we talked about last night. I wrote [some thoughts up about it this morning](http://futureofcoding.org/journal#structural-editors) and also was [sent a list of structured editors](https://www.reddit.com/r/nosyntax/wiki/projects) by @Yair Chuchem |
|
|
Steve Krouse
2017-10-03 12:34 #
Also, as I told !everyone last night, we're going to do the next meeting on 10/23 (as opposed to the first monday in november like our usual pattern) so that @Yair Chuchem from Lamdu who's in town from Israel can attend and present his work! I'm leaning towards having the event at the Reaktor offices (30 W 21st st, thanks @Willa Drengwitz!) at 6pm if you wanted to pencil that in for now... more details to come :slightly_smiling_face: |
|
|
Steve Krouse
2017-10-03 12:31 #
Great seeing everyone at the meeting last night! Thanks to everyone for coming out! I took pretty detailed notes in case you wanted to check em out: https://docs.google.com/document/d/1xXeKyR6SzwYMW9ZgHZXoIZsa… |
|
|
Stefan Lesser
2017-10-03 10:03 #
Has anybody here visited Bret Victor's Dynamicland? I’m in San Francisco for two weeks and looking for ways to officially visit and/or get a tour. Maybe somebody here knows how to do that? |
| 13 comments | |
|
|
Willa Drengwitz
2017-10-03 08:20 #
@Steve Krouse Reaktor FC doesn't have a game on the 23rd, and the Reaktor offices are open to hosting our group. |
| 2 comments | |
|
|
Steve Krouse
2017-09-27 10:35 #
In case any of you missed the Atlantic article about the future of coding... https://www.theatlantic.com/technology/archive/2017/09/savin… |
| 2 comments | |
|
|
Steve Krouse
2017-09-26 09:26 #
!everyone just a friendly reminder that our next meeting is this coming Monday 6:00pm at TOMS (264 Elizabeth St). I have @Willa Drengwitz @Sophie Smithburg @Irvin Hwang @Nicolae Rusan @Kareem Amin and myself attending. Let me know if this changed for anyone and you now can or cannot make it. Excited to see y'all soon :slightly_smiling_face: |
| 8 comments | |
|
|
Steve Krouse
2017-09-13 07:53 #
!everyone the plan for the next meeting is 6:00pm at TOMS (264 Elizabeth St) on 10/2. Please let us know if you can or cannot make it (or if you have other suggestions for place and time) |
| 4 comments | |
|
|
Steve Krouse
2017-09-13 07:50 #
In addition to talking about better platforms, here's what we discussed at the meeting last week https://docs.google.com/document/d/1Js89MSKPsuopbPTBdmPyXbzG… |
|
|
Willa Drengwitz
2017-09-12 13:23 #
Is anyone aware of any type of group meeting up in the NYC area that might be able to help me with prototyping and building the hardware for a custom keyboard? I’m having trouble finding resources concerning the hardware/electronics side of keyboard construction. |
| 1 comments | |
|
|
Willa Drengwitz
2017-09-11 06:34 #
:sigh: I knew that is was going to turn out to be a joke, but I had my hopes up |
|
|
Arya Irani
2017-09-08 06:04 #
Just so. |
|
|
Steve Krouse
2017-09-08 05:55 #
Ah, yes I could see how you might think that. However, if you merely adjust your expectations of Turing-completeness you will see that Nothing is acceptable :wink: |
|
|
Arya Irani
2017-09-08 05:48 #
Hmm, but it's not Turing-complete? |
|
|
Steve Krouse
2017-09-07 08:29 #
My new favorite language. Who needs Elm to get rid of runtime errors when you can have Nothing? https://esolangs.org/wiki/Nothing |
|
|
Paul Biggar
2017-09-03 00:38 #
Hey Aaron - looks really cool. Very similar stuff to what we’re doing! Totally agree that syntax is accidental complexitty! |
|
|
Aaron Kent
2017-09-02 09:06 #
Hello everyone! I’m Aaron, founder of isomorf.io. Thanks for letting me join your group. I’m excited for this community to grow! |
|
|
Sophie Smithburg
2017-09-01 08:08 #
np |
|
|
Steve Krouse
2017-09-01 08:08 #
Thanks for the heads up @Sophie Smithburg! |
|
|
Sophie Smithburg
2017-09-01 08:07 #
Unfortunately I needed to extend my work trip to Mountain View, so I’ll have to skip again. |
|
|
Steve Krouse
2017-09-01 06:58 #
Hi !everyone! Excited for the meeting on Monday 9/4 (labor day) at 7pm! Currently we know @Irvin Hwang @Sophie Smithburg @Kyle Littler and I will be there. Please reply to this message in the thread if you are planning to come and I don't have your name. Also, for those that are coming please let your location preferences be known in the thread for this message. Given that it's just 4 of us, a starbucks or other coffeeshop is probably fine, and I'm happy to keep the location downtown (near the Recurse Center) unless anyone has other ideas |
| 13 comments | |
|
|
Steve Krouse
2017-08-29 08:08 #
Hey everyone! I finally decided to launch my podcast and research project about the future of coding :slightly_smiling_face: futureofcoding.org Would appreciate any feedback y'all have! |
| 3 comments | |
|
|
Steve Krouse
2017-08-27 19:22 #
Cool! How did the last meeting location work out? |
| 3 comments | |
|
|
Irvin Hwang
2017-08-27 18:56 #
ok no worries, i say we go ahead and meet labor day to stick to the schedule and october 2nd will be the next meeting if that works for others |
|
|
Willa Drengwitz
2017-08-26 15:03 #
@Irvin Hwang I know I thumbs up, but now I'm going to be unavailable labor day |
|
|
Nicolae Rusan
2017-08-26 15:00 #
hey @Irvin Hwang, Kareem & I won't be able to make labor day as we'll be out of town, but feel free to meet without us if that's more convenient, I could present at the following meeting. |
|
|
Irvin Hwang
2017-08-26 14:49 #
i'm also ok with labor day, what do you think @Willa Drengwitz @Kareem Amin @Nicolae Rusan |
|
|
Sophie Smithburg
2017-08-25 19:52 #
fine with either just need notice |
|
|
Steve Krouse
2017-08-25 18:56 #
Labor Day is great for me as well. It be harder for me to make it the following Monday |
|
|
Kyle Littler
2017-08-25 18:40 #
labor day is perfect — I know I won’t be stuck at work late |
|
|
Irvin Hwang
2017-08-25 18:37 #
hey !everyone the first monday is coming up, but since it's labor day how do people feel about moving it back a week to monday sept 11th? add a thumbsup if you plan to make it so we can get a head count and figure where to meet. i believe @Nicolae Rusan will be talking about his work |
| # |
Jonathan Edwards
2017-08-20 10:05 #
Sorry about the busted link - here is that paper |
| # |
Nicolae Rusan
2017-08-19 10:37 #
@Nicolae Rusan has joined the channel |
|
|
Jonathan Edwards
2017-08-18 11:21 #
FYI the canonical study of such "box and wire" languages is this 1996 paper: https://s3.amazonaws.com/academia.edu.documents/30981043/10.… This paper largely ended research on such languages in computer science, because it demonstrated that they were a very mixed bag and only a clear win for certain specialized domains. |
| 2 comments | |
|
|
Paul Biggar
2017-08-13 07:46 #
Nice: “After all, XOD is nothing new. It’s just a crazy mix of FRP, dataflow programming, spreadsheets, and passion, which have existed for a long time and have proven to be effective ;)” |
|
|
Irvin Hwang
2017-08-13 06:26 #
Here's some discussion of visual programming languages on this reddit post about a node based microcontroller language https://www.reddit.com/r/programming/comments/6t0d7w/give_a_… there were some comments I found interesting about how it was hard to keep things organized as programs became more complicated with reference to LabVIEW. Maybe relevant to your work @Paul Biggar and @Tim Babb. I'm not familiar with LabVIEW, but I think it'll be important to make it easy to traverse different levels of abstraction maybe by zooming in and out on components/nodes. "I used LabVIEW for a few months and found it great for simple stuff like a sending values over serial with a bit of logic. Once you got any more complex with data processing and introduced a GUI, it became a horrible spaghetti mess." "Pretty much my experience too except I found basic GUIs to be very easy in LabVIEW. My issue was that once your program went to tiny to small, it became much harder to keep the program clear and understandable." Also this comment "The main problem with visual languages is that our primary input device is a text oriented one. I have a feeling that visual languages would work better on tablets and similar touch based devices, although it most likely also need programmers who are able to break free from thinking in terms of text." is one of the reasons I think VR hand controllers are interesting as a means for input |
|
|
Adrienne Tran
2017-08-10 11:24 #
@Irvin Hwang I was just going to send out Glen's flowsheets! He also has a YouTube demo on it. https://youtu.be/y1Ca5czOY7Q |
| 1 comments | |
| # |
Santiago De Rosso
2017-08-09 12:48 #
@Santiago De Rosso has joined the channel |
|
|
Kyle Littler
2017-08-09 11:27 #
oh, I didn’t look close enough to realize it’s actually jonathan edwards. nice to have you here! |
|
|
Jonathan Edwards
2017-08-09 10:35 #
I've been curating a gallery of programmer UIs: https://docs.google.com/presentation/d/1MD-CgzODFWzdpnYXr8bE… Let me know if I've missed something with an interesting difference. |
| 4 comments | |
| # |
Ellen Chisa
2017-08-09 06:16 #
@Ellen Chisa has joined the channel |
| # |
Arya Irani
2017-08-09 05:40 #
@Arya Irani has joined the channel |
|
|
Steve Krouse
2017-08-08 20:13 #
Thanks for taking notes!! :pray: |
|
|
Irvin Hwang
2017-08-08 20:05 #
also sorry about the notes (http://tinyurl.com/futureprogramming2), but feel free to correct/add |
|
|
Irvin Hwang
2017-08-08 20:03 #
sorry to hear @Stefan Lesser, the next one will be sept 4th! just saw this on twitter http://tinyletter.com/Flowsheets/letters/flowsheets-visualizations |
|
|
Stefan Lesser
2017-08-08 15:11 #
I don't believe it! I missed the meeting because I thought it's going to be tonight. 🤦:skin-tone-2:♂️ |
|
|
Willa Drengwitz
2017-08-08 10:27 #
Big ups to tbabb and pbiggar for their projects and for sharing there knowledge and ideas! |
|
|
Willa Drengwitz
2017-08-08 10:27 #
I’m really optimistic after our meeting yesterday. My main takeaway is that node base programming is a huge success in the video and animation/modeling space. We just need to bring it all together so general software engineering can utilize this innovation! |
|
|
Jonathan Edwards
2017-08-08 10:24 #
Really great to see all the energy and optimism here! If we don't lose hope we can improve programming. |
|
|
Willa Drengwitz
2017-08-08 10:18 #
Welcome @Jonathan Edwards !!! |
|
|
Steve Krouse
2017-08-08 10:15 #
Welcome @Jonathan Edwards! |
| # |
Jonathan Edwards
2017-08-08 10:14 #
@Jonathan Edwards has joined the channel |
|
|
Willa Drengwitz
2017-08-08 07:42 #
I wanted to drop this down for discussion. https://www.hazardoussoftware.com/projects/ I’ve been following Chris Hazard since he was bootstraping his company in his home office working on the game Achron. Really smart guy with really interesting projects. |
| 1 comments | |
|
|
Irvin Hwang
2017-08-07 13:53 #
Hey @Paul Biggar @Willa Drengwitz @Stefan Lesser, how do you feel about meeting at starbucks 471 Broadway? @Adrienne Tran was also interested in joining and would not be able to get into RC. I looked at ground support and they close at 8p and starbucks closes at 9p |
| 8 comments | |
|
|
Steve Krouse
2017-08-06 20:18 #
I mostly have FOMO for all of the links to projects that y'all are going to mention tomorrow. I remember there were a good dozen or so that came out of last week's meeting |
|
|
Steve Krouse
2017-08-06 20:17 #
Bummed to be missing the meetup tomorrow! I'd be really grateful if anyone would be kind enough to take notes. Here's a doc if that's helpful... http://tinyurl.com/futureprogramming2 |
|
|
Irvin Hwang
2017-08-06 14:46 #
just a reminder we're planning to meet at RC tomorrow at 7p. if hopper is taken i'll put up a message for what room i'm in |
| # |
SengMing Tan
2017-08-03 07:37 #
@SengMing Tan has joined the channel |
|
|
Paul Biggar
2017-08-02 17:50 #
cool, ill be there |
|
|
Irvin Hwang
2017-08-02 16:04 #
hey @Paul Biggar it's 7p and if it's all RC alum let's do it at RC otherwise ground support cafe (unless there are more than say 5 people) |
|
|
Paul Biggar
2017-08-02 12:00 #
You folks seen Jonathan Edwards stuff? Good rabbit hole starting at http://alarmingdevelopment.org/ |
|
|
Paul Biggar
2017-08-02 11:28 #
Saw this today: https://docs.google.com/presentation/d/1MD-CgzODFWzdpnYXr8bE… |
|
|
Paul Biggar
2017-08-01 21:49 #
I’ll be in NYC then - what time and where? |
|
|
Irvin Hwang
2017-08-01 19:26 #
good luck! |
|
|
Sophie Smithburg
2017-08-01 19:25 #
just really mad rush at work to get things done in time for promotion deadlines |
|
|
Sophie Smithburg
2017-08-01 19:25 #
i intend to be at these in the future |
|
|
Sophie Smithburg
2017-08-01 19:25 #
unfortunately out of town, depending on timing i might maybe be able to remote in, if the space is friendly to that, but don’t plan around me at all |
|
|
Irvin Hwang
2017-08-01 19:23 #
also for format we were talking about starting w/ quick intros and what you're working on followed by breaking into smaller groups unconference style (steve feel free to clarify if i'm not presenting that clearly) or possibly have more in depth presentations on new programming environments/systems if anyone wants to volunteer. i like the idea of the small group discussions, but open to any ideas (especially if anyone wants to present their own work) |
|
|
Irvin Hwang
2017-08-01 19:19 #
hey !everyone steve and I are trying to get an estimate on attendance for the meeting on 8/7 since we might get a room on breather depending on the size/what people want to do (or if someone has access to a space we can use somewhere relatively central...I think most people are downtown). ground support cafe is still an option, but last time we met at starbucks and ended up being pretty loud for a decent sized group to have a conversation/find seats |
|
|
Sophie Smithburg
2017-07-31 13:12 #
it’s a doozy. check out kcc as well, it’s a related thinger that makes a formally specified c compiler from a few hundred rules/equations. |
|
|
Steve Krouse
2017-07-31 12:56 #
Welcome @Sophie Smithburg! Thanks for the video -- will check it out soon :slightly_smiling_face: |
| # |
Tim Babb
2017-07-30 22:45 #
@Tim Babb has joined the channel |
|
|
Sophie Smithburg
2017-07-28 19:19 #
the slides are awful (barely legible, if you really put a lot of effort in, at best) but the talk covers all the intro stuff pretty well. |
|
|
Sophie Smithburg
2017-07-28 19:19 #
some time when I'm not trying to sleep I will share more links, but for now: https://www.youtube.com/watch?v=mZE_Xv9qym4 |
|
|
Sophie Smithburg
2017-07-28 19:17 #
It does this by cleverly arranging to have a very simple logic (a subset of first order logic iirc) overlap with the term rewriting rules of a TRS based operational semantics. |
|
|
Sophie Smithburg
2017-07-28 19:16 #
Maude is a system for writing executable specifications of systems. The key here is that it combines operational and equational semantics into a single system in a natural way, so you don't have to manually maintain a correspondence between them. |
|
|
Sophie Smithburg
2017-07-28 19:15 #
So. What is maude? |
|
|
Sophie Smithburg
2017-07-28 19:15 #
I recommend y'all check out maude. Regardless of whether you make use of it, the ideas are incredibly powerful – the only thing that seems weird is that more people don't use it. There are some implementation related shortcomings I'm already aware of, but the fundamental properties are just great. |
|
|
Sophie Smithburg
2017-07-28 19:14 #
here I am |
|
|
Sophie Smithburg
2017-07-28 19:14 #
so |
|
|
Sophie Smithburg
2017-07-28 19:14 #
and got notified that I should really be in here |
|
|
Sophie Smithburg
2017-07-28 19:14 #
I sent a message in the RC zulip about maude |
| # |
Sophie Smithburg
2017-07-28 19:12 #
@Sophie Smithburg has joined the channel |
| # |
Adrienne Tran
2017-07-26 10:58 #
@Adrienne Tran has joined the channel |
|
|
Paul Biggar
2017-07-25 09:06 #
You folks might like this: http://www.andescotia.com/products/marten/ |
|
|
Irvin Hwang
2017-07-25 04:19 #
welcome Paul! looking forward to seeing how Dark develops |
|
|
Paul Biggar
2017-07-24 17:59 #
Interesting old mac thing that’s like Dark |
|
|
Paul Biggar
2017-07-24 17:59 #
Someone told me about Prograph today |
|
|
Paul Biggar
2017-07-24 17:59 #
Oh, that’s really great. checked out a few more |
|
|
Steve Krouse
2017-07-24 13:00 #
(I haven't launched publicly yet so please don't share broadly yet) |
|
|
Steve Krouse
2017-07-24 12:59 #
Thanks @Paul Biggar! I've been researching this space for the space 2ish years now on and off. Just this month I decided to make my research more public by creating a podcast and public research journal. You can find both here - http://futureofcoding.org. I'd love to have you and many others on this slack as guests soon! |
|
|
Paul Biggar
2017-07-23 17:30 #
I'm looking at the docs that @Steve Krouse and @Stefan Lesser and @Irvin Hwang have shared - super useful surveys of the space. I've been hardcore looking into this and talking to people for 6 months and I've only found about half of what you folks have!! |
|
|
Paul Biggar
2017-07-23 14:09 #
Also, hey! And thanks :slightly_smiling_face: |
|
|
Paul Biggar
2017-07-23 14:09 #
No sneak previews since we're in super early days, but here's a doc we sent investors: https://paulbiggar.com/dark |
| 1 comments | |
|
|
Steve Krouse
2017-07-23 14:08 #
Welcome @Paul Biggar! Nice to see you again :) Sounds like an exciting new startup! Do you have any links or sneak previews to share? |
|
|
Paul Biggar
2017-07-23 13:57 #
Thanks! |
|
|
Willa Drengwitz
2017-07-23 13:35 #
Hey Paul! Welcome :) |
|
|
Paul Biggar
2017-07-23 13:26 #
Hey folks, I was invited by Stefan Lesser! I'm building a startup intended to be the future of programming, so this seems apt! Our goal is to reduce the complexity of building software, making it 100x easier to build software, and bring coding to 1B people :slightly_smiling_face: :slightly_smiling_face: :slightly_smiling_face: |
| # |
Paul Biggar
2017-07-23 13:24 #
@Paul Biggar has joined the channel |
|
|
Stefan Lesser
2017-07-23 07:28 #
I've been cleaning up my RC resources and moved all future programming related links into a separate document here: https://github.com/stefanlesser/recurse/blob/master/resource… |
|
|
Irvin Hwang
2017-07-11 19:49 #
Hey all let's plan to meet up 8/7! Ground Support Cafe sounds cool unless someone wants to host |
|
|
Steve Krouse
2017-07-09 07:16 #
Hello !everyone! I'm thinking that we could meet tomorrow (Monday 7/10) at 7pm at Ground Support Cafe in soho. Sorry for the last minute scheduling so if nobody can make it, we can reschedule for next week or something. Please respond or react with an emoji to this message if you can or can't make it :) |
| 6 comments | |
|
|
Irvin Hwang
2017-07-07 05:33 #
Hey all I don't think I'll be able to meet on Monday after all (unless it's later at like 8), sorry about that. It should be easier for me next month since I'll be more settled into my new job |
|
|
Irvin Hwang
2017-06-30 15:05 #
Hey sorry I've been traveling the past two weeks and just got back today. The group is relatively new, the idea is to meet once a month (first monday although this month we're doing July 10th) and the kind of unifying theme has been new interfaces for programming. It was kind of a freeform discussion last time, but I think it'd be interesting if one or two people talk about a project (either theirs or something they've tried) at each meeting to kind of seed the conversation, but pretty open to format |
|
|
Rodrigo Tello
2017-06-26 14:17 #
we build programing languages/environments for kids :slightly_smiling_face: |
|
|
Rodrigo Tello
2017-06-26 14:17 #
I was invited by Sam John, I work at Hopscotch |
|
|
David Lee
2017-06-26 14:09 #
I'm uncertain if there's any MO; maybe someone with more history with the meet-up could speak to that. what brings you here, rodrigo? |
|
|
David Lee
2017-06-26 14:07 #
my experience is that a bunch of people from Recurse Center (recurse.com) have been meeting up IRL to talk about future programming languages; and that this slack was made to organize those meetings, as well as to spread out into non-IRL communication |
|
|
Rodrigo Tello
2017-06-26 14:05 #
:thinking_face: |
|
|
Rodrigo Tello
2017-06-26 14:05 #
is it just a slack group? a meetup? a conference? |
|
|
Rodrigo Tello
2017-06-26 14:04 #
when was it formed? what is it's main modus operandi? |
|
|
Rodrigo Tello
2017-06-26 14:04 #
is this group new? |
|
|
Willa Drengwitz
2017-06-26 06:40 #
What up! |
|
|
Rodrigo Tello
2017-06-26 06:20 #
hello |
| # |
Rodrigo Tello
2017-06-26 06:20 #
@Rodrigo Tello has joined the channel |
| # |
Sam John
2017-06-25 20:10 #
@Sam John has joined the channel |
|
|
Stefan Lesser
2017-06-25 19:51 #
July 10th works for me. I don't know where any of the mentioned offices are and would prefer something close to RC. I also wouldn't mind turning this into a dinner. :-) |
|
|
Irvin Hwang
2017-06-25 19:45 #
Cool July 10th also should work for me. @Willa Drengwitz is your office available or should we look into the breather option? I'll be working in midtown so going up to @Steve Krouse's office is also fine with me |
|
|
Steve Krouse
2017-06-25 08:16 #
sounds great to me! |
|
|
Willa Drengwitz
2017-06-24 09:34 #
@here I will be out of town as well on July 3rd. How do we feel about moving the July meeting to the following week, July 10th? |
| # |
Steve Krouse
2017-06-23 10:54 #
|
|
|
Willa Drengwitz
2017-06-22 13:34 #
I havent, unless maybe someone brought it up at the last meeting |
|
|
Steve Krouse
2017-06-22 12:27 #
Have y'all seen Luna Lang? http://www.luna-lang.org/ it's on the top of HN today. I've tried to get access in the past but it seems like I may just have to be patient until they're in public beta |
| # |
David Lee
2017-06-21 10:45 #
@David Lee has joined the channel |
|
|
Steve Krouse
2017-06-21 07:41 #
Ah bummer - could you do the following week @Irvin Hwang? |
|
|
Irvin Hwang
2017-06-20 19:26 #
hey @all there's a good chance i won't make the next meeting (July 3rd). i can try to help coordinate though if people are interseted in meeting. @Willa Drengwitz were you still planning to host at your office? |
| # |
paraduct
2017-06-17 13:33 #
@paraduct has joined the channel |
|
|
Steve Krouse
2017-06-16 12:00 #
I'd love to help with that. Maybe start on google docs so we can quickly aggregate a number of links? |
|
|
Steve Krouse
2017-06-16 11:36 #
That looks like an amazing study guide -- thanks for sharing! I personally don't know of any such collection of resources for the future of programming so I love the idea about starting one |
| # |
Kyle Littler
2017-06-15 17:45 #
@Kyle Littler has joined the channel |
|
|
Stefan Lesser
2017-06-14 20:42 #
Talking about great collection of links: is there a collection of resources already somewhere on the web, or should we collect (and perhaps categorize) resources we know about? I just joined the party and would love to know what everybody else has already found. I made a list of stuff to work through while I'm at RC, and that has a section at the end about the future of programming: https://github.com/stefanlesser/recurse/blob/master/resource… (as you will see there's all the links from the last meeting :-) Happy to pull that out into its own page or even repository so we can all add to it, although I have a feeling that something like that probably already exists somewhere else…? |
| 7 comments | |
|
|
Steve Krouse
2017-06-14 07:35 #
Wow, looks like a great collection of links! |
| # |
Stefan Lesser
2017-06-14 05:16 #
@Stefan Lesser has joined the channel |
| # |
Willa Drengwitz
2017-06-13 17:10 #
@Willa Drengwitz has joined the channel |
|
|
Irvin Hwang
2017-06-13 15:53 #
saw this on twitter the other day http://pgbovine.net/human-centered-programming-tools.htm |
| # |
Joe Ardent
2017-06-13 15:41 #
@Joe Ardent has joined the channel |
|
|
Steve Krouse
2017-06-13 15:40 #
:slightly_smiling_face: |
|
|
Irvin Hwang
2017-06-13 15:40 #
thanks for setting this up @Steve Krouse ! |
| # |
Irvin Hwang
2017-06-13 15:39 #
@Irvin Hwang has joined the channel |
| # |
Steve Krouse
2017-06-13 15:34 #
@Steve Krouse has joined the channel |